用c语言解决给定一个只包含小写字母的字符串,请你找到第一个仅出现一次的字符。如果没有,输出no。 输入格式 一个字符串,长度小于100000。 输出格式 输出第一个仅出现一次的字符,若没有则输出n
时间: 2024-12-20 16:24:28 浏览: 14
c语言将字符串中的小写字母转换成大写字母
5星 · 资源好评率100%
在 C 语言中,可以使用哈希表(散列表)来解决这个问题。因为哈希表的插入和查找操作的时间复杂度都是 O(1),这有助于我们快速找出字符及其出现次数。以下是步骤:
1. 首先,创建一个大小合适的数组(假设为26,因为只有小写字母),并初始化所有元素为0,数组下标代表ASCII码减去 'a' 的值,用于表示小写字母。
2. 遍历输入字符串,对于每个字符:
- 计算其 ASCII 码减去 'a' 的值作为数组索引。
- 如果该位置的值为0,说明这是第一个出现的字符,更新结果并跳出循环。
- 否则,将该位置的值加1,表示字符再次出现。
3. 遍历结束后,如果找到了第一个只出现一次的字符,返回它;否则返回 'n' 表示没有这样的字符。
```c
#include <stdio.h>
#include <stdbool.h>
char findFirstUniqueChar(char *str) {
int count[26] = {0};
for (int i = 0; str[i]; ++i) {
char index = str[i] - 'a';
if (count[index] == 0) {
return str[i];
}
count[index]++;
}
return 'n'; // 没有找到唯一的字符
}
int main() {
char input[] = "hello"; // 示例输入
char result = findFirstUniqueChar(input);
printf("%c", result); // 输出结果
return 0;
}
```
阅读全文