输入样例:aabcdd 输出样例:a2b1c1d2
时间: 2023-08-16 15:05:14 浏览: 77
根据您提供的测试用例,可以看出代码有一个问题,就是无法正确处理相邻的相同字母。为了解决这个问题,我们可以在统计每个字母出现次数时,增加一个变量 `last`,用来记录上一个字母:
```c
#include <stdio.h>
#include <string.h>
#define MAX_N 100 // 最大字符串长度
#define ALPHABET_SIZE 26 // 字母表大小
int main() {
char str[MAX_N];
int count[ALPHABET_SIZE] = {0}; // 统计每个字母出现的次数
scanf("%s", str);
int n = strlen(str);
char last = '\0'; // 上一个字母
for (int i = 0; i < n; i++) {
if (str[i] != last) { // 如果这个字母和上一个字母不同,才去统计它的出现次数
count[str[i] - 'a']++; // 统计每个字母出现的次数
}
last = str[i];
}
for (int i = 0; i < ALPHABET_SIZE; i++) {
if (count[i] > 0) { // 如果这个字母出现过,输出它的次数
printf("%c%d", 'a' + i, count[i]);
} else { // 如果这个字母没出现过,输出它的名称和次数 0
printf("%c%d", 'a' + i, 0);
}
}
printf("\n");
return 0;
}
```
请您尝试使用这个修改后的代码,看能否通过测试。
阅读全文