题目链接:点击打开链接
本题写法很多,反而在写法上纠结了一会儿...快速找到简单的写法是关键。
小小分析一下。如果要输出YES,以下为必要条件
1.串长为3的整数倍
2.三个部分内的元素全部相同
3.每个部分的元素与其他的元素均不相同
以上条件任一不满足就输出NO
#include <iostream>
#include <cstdio>
#include <cstring>
#include <vector>
#include <algorithm>
using namespace std;
int nn,num;
int main(){
char str[100];
int i;
while(~scanf("%s",str)){
nn = 0;
bool flag = true;
int len = strlen(str);
char tmp,a = 0,b = 0,c = 0;
tmp = str[0];
a = tmp;
for(i =0;i < len;i++){
if(tmp==str[i]){
nn++;
}
else {
tmp = str[i];
b = tmp;
break;
}
}
if(nn*3!=len) flag = false;
for(int k = i;i<k+nn;i++){
if(str[i]!=tmp){
flag = false;
break;
}
}
tmp = str[i];
if(tmp == a||tmp == b) flag = false;
for(int k = i;i<k+nn;i++){
if(str[i]!=tmp){
flag = false;
break;
}
}
if(flag) printf("YES\n");
else printf("NO\n");
}
return 0;
}