输入一个只包含小写字母的字符串,请你找到第一个仅出现一次的字符。如果没有,输出 no。c语言
时间: 2024-09-06 14:06:18 浏览: 58
这个问题可以通过使用一个哈希表(在C语言中通常使用数组来模拟哈希表)来解决,以便记录每个字符出现的次数。算法步骤如下:
1. 遍历字符串,记录每个字符出现的次数。
2. 再次遍历字符串,查找第一个出现次数为1的字符。
下面是C语言的实现代码:
```c
#include <stdio.h>
#define SIZE 256 // ASCII字符集大小
char FirstUniqChar(char* s){
int hashTable[SIZE]; // 创建哈希表
for (int i = 0; i < SIZE; i++){
hashTable[i] = 0; // 初始化哈希表
}
// 记录每个字符出现的次数
for (int i = 0; s[i] != '\0'; i++){
hashTable[(int)s[i]]++;
}
// 查找第一个出现一次的字符
for (int i = 0; s[i] != '\0'; i++){
if (hashTable[(int)s[i]] == 1){
return s[i]; // 返回第一个唯一字符
}
}
return '\0'; // 如果没有唯一字符,返回'\0'
}
int main() {
char s[] = "leetcode";
char result = FirstUniqChar(s);
if (result) {
printf("第一个仅出现一次的字符是: %c\n", result);
} else {
printf("no\n");
}
return 0;
}
```
请注意,这个程序假设输入字符串`s`只包含ASCII字符。如果要处理其他字符集(比如Unicode),需要相应地调整`SIZE`的大小以及字符到数组索引的映射方式。
阅读全文