c语言把字符串相邻的相同字符消除,所有相邻的相同字符被消除后,剩余字符会重新拼接成新的字符串,再按照相同的规则消除字符,直到所有相邻的字符都不相同或者变成空串为止,输出结果,消除为空串输出YES,否则输出NO.完整代码
时间: 2024-10-24 15:07:22 浏览: 5
在 C 语言中,你可以通过遍历字符串并比较相邻字符的方式来实现这个功能。这里提供一种简单的思路,但是由于 C 语言没有内置字符串操作函数,我们可以手动处理。以下是使用数组和指针的示例代码:
```c
#include <stdio.h>
#include <stdbool.h>
bool eliminateAdjacentChars(char* str) {
int len = strlen(str);
if (len == 0) { // 如果原字符串为空,直接返回YES
return true;
}
char prevChar = str[0];
for (int i = 1; i < len; i++) {
if (str[i] != prevChar) { // 当前字符与前一个不同,添加到新字符串
str[--i] = '\0'; // 移动到下一个位置,以便将当前字符写入
strcat(str, &str[i]);
}
prevChar = str[i]; // 更新前一个字符
}
// 再次检查是否有相邻的相同字符
for (int i = 1; str[i] != '\0'; i++) {
if (str[i] == str[i - 1]) {
return false; // 如果找到相邻相同字符,则返回NO
}
}
return true; // 没有找到相邻相同字符,返回YES
}
int main() {
char testStr[] = "aaabbcc";
if (eliminateAdjacentChars(testStr)) {
printf("YES\n");
} else {
printf("NO\n");
}
return 0;
}
```
这个程序首先判断输入字符串是否为空,然后遍历字符串,每遇到不同的字符就将其添加到新字符串中。最后检查新字符串中是否存在相邻的相同字符。
阅读全文