c语言数组:给你一个仅包含小写英文字母的字符串,请你编程判断这个字符串所有字符是否全都不同。 输入 输入一行字符串,仅包含小写英文字母,并且字符串的长度在 [ 1 , 50 ] 之间 输出 输出一行,如果字符串满足题意,输出“Yes”,否则输出“No”
时间: 2024-12-25 10:29:01 浏览: 6
在C语言中,你可以通过以下步骤来判断一个只含有小写英文字母的字符串中所有字符是否全都不相同:
1. 首先,声明一个哈希表(如`char hash[26]`),用于记录每个字母出现的次数。因为只有小写字母,所以可以假设我们处理的是ASCII码范围内的a-z。
2. 使用`for`循环遍历输入的字符串。对于字符串中的每一个字符`c`,将对应的哈希表位置`hash[c - 'a']`加一。这里要注意,需要减去小写字母'a'的ASCII值来进行索引。
3. 遍历结束后,检查哈希表,看是否有任何一个位置的元素大于1。如果有,则说明有重复字符,输出"No";否则,说明所有字符都不同,输出"Yes"。
以下是简单的伪代码实现:
```c
#include <stdio.h>
int main() {
char str[51];
fgets(str, sizeof(str), stdin); // 从标准输入读取字符串
// 初始化哈希表
int hash[26] = {0};
// 计算字符频率
for (int i = 0; str[i] != '\0'; i++) {
hash[str[i] - 'a']++;
}
// 检查是否有重复
for (int i = 0; i < 26; i++) {
if (hash[i] > 1) {
printf("No\n");
return 0;
}
}
printf("Yes\n");
return 0;
}
```
阅读全文