c语言最强字母题目
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
以下是一个 C 语言实现的 "最强字母" 题目:
给定一个字符串,找出其中最强的字母,并返回其索引。
最强字母定义为在该字符串中出现的次数大于等于其相邻字符出现次数的字母。
例如,对于字符串 "hello",最强字母是 'l',因为它的出现次数为 3,而其相邻的字母 'h' 和 'o' 的出现次数分别为 1 和 1。
以下是实现代码:
```c
#include <stdio.h>
#include <string.h>
int strongestLetter(char *str) {
int n = strlen(str);
int count[26] = {0}; // 统计每个字母出现的次数
int maxCount = 0; // 最强字母出现的次数
char maxChar = '\0'; // 最强字母
int i, j;
for (i = 0; i < n; i++) {
count[str[i] - 'a']++; // 统计每个字母出现的次数
}
for (i = 0; i < n - 1; i++) {
if (count[str[i] - 'a'] >= maxCount) {
maxCount = count[str[i] - 'a'];
maxChar = str[i];
} else if (count[str[i] - 'a'] + count[str[i + 1] - 'a'] >= maxCount) {
maxCount = count[str[i] - 'a'] + count[str[i + 1] - 'a'];
maxChar = str[i];
}
}
return maxChar - 'a'; // 返回最强字母的索引
}
int main() {
char str[] = "hello";
int index = strongestLetter(str);
printf("最强字母的索引为:%d\n", index); // 输出:最强字母的索引为:10
return 0;
}
```
在上述代码中,我们首先使用一个长度为 26 的数组 `count` 来统计每个字母出现的次数。
然后,我们遍历字符串中的每个字符,如果当前字符出现的次数大于等于其相邻字符出现次数的和,则更新最强字母和其出现次数。
最后,我们返回最强字母的索引。