让我们来玩个字符消除游戏吧, 给定一个只包含大写字母的字符串s,消除过程是如下进行的:
1)如果s包含长度为2的由相同字母组成的子串,那么这些子串会被消除,余下的子串拼成新的字符串。
例如”ABCCBCCCAA”中”CC”,”CC”和”AA”会被同时消除,余下”AB”, “C”和”B”拼成新的字符串”ABBC”。
2)上述消除会反复一轮一轮进行,直到新的字符串不包含相邻的相同字符为止。
例如”ABCCBCCCAA”经过一轮消除得到”ABBC”,再经过一轮消除得到”AC”
解答要求 时间限制:1000ms, 内存限制:64MB
输入
第一行输入一个正整数 T(1 <= T <= 50) , 表示有 T 组测试数据.
对于每个测试数据输入包括一行, 由大写字母组成的字符串s,长度不超过100.
输出
对于每组测试数据, 若最后可以把整个字符串全部消除, 就输出 Yes, 否则输出 No.
样例
输入样例 1 复制
2 ABCCBA ABCCCCCBBBBB
输出样例 1
Yes No
#include <string.h>
#include <stdio.h>
#include <stdlib.h>
int main()
{
int n = 0;
int m = 0;
int leng = 0;
int i,j= 0;
char str[100] = { 0 };
scanf("%d",&n);
for (i = 0; i < n; i++) {
scanf("%s",str);
//printf("str is %s\r\n",str);
leng = strlen(str);
for (j = 0; j < leng; j++) {
if (str[j] == str[j+1]) {
//删除元素
for (m = j; m < leng-2; m++) {
str[m] = str[m + 2];
}
//printf("str 1 is %s\r\n", str);
leng = leng - 2;
j = -1;
}
}
//printf("leng is %d\r\n", leng);
if (leng == 0) {
printf("Yes\r\n");
}
else {
printf("No\r\n");
}
}
}