我的PAT-BASIC代码仓:https://github.com/617076674/PAT-BASIC
原题链接:https://pintia.cn/problem-sets/994805260223102976/problems/994805280817135616
题目描述:
知识点:计数
思路:开一个大小为26的数组,分别记录每个英文字母出现的次数
注意点:
(1)英文字母不区分大小写。
(2)如果有并列,则输出字母序最小的那个字母。
时间复杂度是O(n),其中n为输入字符串的长度。空间复杂度是O(26)。
C++代码:
#include<iostream>
#include<string>
using namespace std;
int main() {
string input;
getline(cin, input);
int count[26];
for (int i = 0; i < 26; i++) {
count[i] = 0;
}
for (int i = 0; i < input.length(); i++) {
if (input[i] >= 'a' && input[i] <= 'z') {
count[input[i] - 'a']++;
}else if (input[i] >= 'A' && input[i] <= 'Z') {
count[input[i] - 'A']++;
}
}
int maxIndex = 0;
for (int i = 1; i < 26; i++) {
if (count[i] > count[maxIndex]) {
maxIndex = i;
}
}
char resultChar;
resultChar = 'a' + maxIndex;
cout << resultChar << " " << count[maxIndex];
}
C++解题报告: