我可不是为了被全人类喜欢才活着的,只要|

王陸

园龄:6年11个月粉丝:2052关注:178

Check the string

A has a string consisting of some number of lowercase English letters 'a'. He gives it to his friend B who appends some number of letters 'b' to the end of this string. Since both A and B like the characters 'a' and 'b', they have made sure that at this point, at least one 'a' and one 'b' exist in the string.

B now gives this string to C and he appends some number of letters 'c' to the end of the string. However, since C is a good friend of A and B, the number of letters 'c' he appends is equal to the number of 'a' or to the number of 'b' in the string. It is also possible that the number of letters 'c' equals both to the number of letters 'a' and to the number of letters 'b' at the same time.

You have a string in your hands, and you want to check if it is possible to obtain the string in this way or not. If it is possible to obtain the string, print "YES", otherwise print "NO" (without the quotes).

Input

The first and only line consists of a string SS (1|S|5000). It is guaranteed that the string will only consist of the lowercase English letters 'a', 'b', 'c'.

Output

Print "YES" or "NO", according to the condition.

Examples
input
aaabccc
output
YES
input
bbacc
output
NO
input
aabc
output
YES
Note

Consider first example: the number of 'c' is equal to the number of 'a'.

Consider second example: although the number of 'c' is equal to the number of the 'b', the order is not correct.

Consider third example: the number of 'c' is equal to the number of 'b'.

 

 

复制代码
 1 #include <stdio.h>
 2 #include <string.h>
 3 int main()
 4 {
 5     int a,b,c,flag0,flag1,flag2,flag,i,len;
 6     char s[5001];
 7     gets(s);
 8     len=strlen(s);
 9     a=0;
10     b=0;
11     c=0;
12     flag0=0;
13     flag1=0;
14     flag2=0;
15     flag=0;
16     len=strlen(s);
17     for(i=0; i<len; i++)
18     {
19         if(s[i]=='a')
20         {
21             if(flag1||flag2)
22             {
23                 printf("NO\n");
24                 return 0;
25             }
26             a++;
27             flag0=1;
28         }
29         else if(s[i]=='b')
30         {
31             if(!flag0||flag2)
32             {
33                 flag=1;
34                 break;
35             }
36             b++;
37             flag1=1;
38         }
39         else if(s[i]=='c')
40         {
41             if(!flag0||!flag1)
42             {
43                 flag=1;
44                 break;
45             }
46             c++;
47             flag2=1;
48         }
49     }
50     if(flag==1)
51         printf("NO\n");
52     else if((c==a||c==b)&&(c!=0&&b!=0))///注意要防止出现只有a,没有其他字母的情况
53         printf("YES\n");
54     else
55         printf("NO\n");
56     return 0;
57 }
复制代码

 

本文作者:王陸

本文链接:https://www.cnblogs.com/wkfvawl/p/9215418.html

版权声明:本作品采用知识共享署名-非商业性使用-禁止演绎 2.5 中国大陆许可协议进行许可。

posted @   王陸  阅读(260)  评论(0编辑  收藏  举报
点击右上角即可分享
微信分享提示
评论
收藏
关注
推荐
深色
回顶
收起