题目


解法1

点击查看代码
#include <iostream>
#include <map>
using namespace std;

int main() {
    string line;
    getline(cin, line); // 读取整行输入

    map<string, int> wordCount; // 统计单词出现次数
    string word, mostFreqWord;
    int maxFreq = 0;

    for (int i = 0; i <= line.size(); i++) {
        char ch = (i < line.size()) ? line[i] : ' '; // 确保最后一个单词能被处理

        // 判断是否是字母或数字
        if ((ch >= 'a' && ch <= 'z') || (ch >= 'A' && ch <= 'Z') || (ch >= '0' && ch <= '9')) {
            // 转换为小写并加入当前单词
            if (ch >= 'A' && ch <= 'Z') ch += 32; // 手动转换大写字母为小写
            word += ch;
        } else if (!word.empty()) { // 处理完整的单词
            wordCount[word]++;
            if (wordCount[word] > maxFreq || (wordCount[word] == maxFreq && word < mostFreqWord)) {
                maxFreq = wordCount[word];
                mostFreqWord = word;
            }
            word.clear(); // 清空单词,准备下一个
        }
    }

    cout << mostFreqWord << " " << maxFreq << endl;
    return 0;
}