题目1006:ZOJ问题(字符串处理)

问题来源

  http://ac.jobdu.com/problem.php?pid=1006

问题描述

  输入一个只包含'z','o','j'三种字符的字符串,判断是否符合要求。

问题分析

  分析AC的三个条件,用a、b、c代表<a'z'b'j'c>中'o'的数量。条件一是(0,1,0),条件二是(x,1,x),把条件二代入条件三,可以得到(x,2,2x)满足条件,继续代入会有(x,3,3x)...
  于是我们发现一个问题,那就是a*b=c,注意b>0。
注意事项:
  ①:判断字符串里面只有一个z一个j,且z在j后面。
  ②:中间有任何不符合要求的直接结束即可。

参考代码

//
// Created by AlvinZH on 2017/4/27.
// Copyright (c) AlvinZH. All rights reserved.
//

#include <iostream>
#include <cstdio>
#include <algorithm>
using namespace std;

int main()
{
    char s[1005];
    int a,b,c;
    while(scanf("%s",s)!=EOF)
    {
        a=0;
        b=0;
        c=0;
        int i=0;
        while(s[i]=='o')
        {
            a++;
            i++;
        }
        if(s[i]!='z')
        {
            printf("Wrong Answer
");
            continue;
        }
        i++;
        while(s[i]=='o')
        {
            b++;
            i++;
        }
        if(s[i]!='j')
        {
            printf("Wrong Answer
");
            continue;
        }
        i++;
        while(s[i]=='o')
        {
            c++;
            i++;
        }
        if(s[i]!='')
        {
            printf("Wrong Answer
");
            continue;
        }

        if(a*b==c&&b>0) printf("Accepted
");
        else printf("Wrong Answer
");
    }
}

作者: AlvinZH

出处: http://www.cnblogs.com/AlvinZH/

本人Github:https://github.com/Pacsiy/JobDu

本文版权归作者AlvinZH和博客园所有,欢迎转载和商用,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利.

原文地址:https://www.cnblogs.com/AlvinZH/p/6774968.html