C语言给定一个只包含小写字母的字符串,请你找到第一个仅出现一次的字符,如果没有,输出no。
时间: 2023-08-14 14:00:31 浏览: 152
在一个字符串中找到第一个只出现一次的字符
你可以使用一个哈希表来解决这个问题。首先,遍历字符串,统计每个字符出现的次数,并存储在哈希表中。然后,再次遍历字符串,找到第一个出现次数为1的字符。
以下是使用C语言实现的例子:
```c
#include <stdio.h>
#include <string.h>
#define MAX_SIZE 26
char findFirstUniqueChar(char* str) {
int freq[MAX_SIZE] = {0}; // 初始化字符频率数组
// 统计每个字符出现的次数
for (int i = 0; i < strlen(str); i++) {
freq[str[i] - 'a']++;
}
// 找到第一个出现次数为1的字符
for (int i = 0; i < strlen(str); i++) {
if (freq[str[i] - 'a'] == 1) {
return str[i];
}
}
return 'no'; // 如果没有仅出现一次的字符,则返回'no'
}
int main() {
char str[100];
printf("请输入一个只包含小写字母的字符串:");
scanf("%s", str);
char result = findFirstUniqueChar(str);
if (result == 'no') {
printf("没有仅出现一次的字符。\n");
} else {
printf("第一个仅出现一次的字符是:%c\n", result);
}
return 0;
}
```
在这个例子中,我们定义了一个大小为26的整型数组 `freq` 来存储每个字符出现的次数。然后,我们遍历字符串两次,第一次统计字符频率,第二次找到第一个出现次数为1的字符。如果没有仅出现一次的字符,则返回字符串 "no"。
希望这可以帮助到你!如有任何问题,请随时向我提问。
阅读全文