思路如下

  每个 word 视为一个键,然后每枚举一个该键字符,该键相对应的值就加一。即取 string 到 int 的映射

/* 伪码 */
for (枚举每个字符) {
    if (当前字符是 alpha cha) {
        if (是大写)    键 = 键 + 其小写
        else    键 = 键 + *it
    } else    continue;//跳过其他字符

    if (下一个字符不是 alpha cha) {
        if (键在 map 中不存在) {
            map[键] = 1;//初始为 1
        } else {
            int ori = map[键];
            ori++;
            map[键] = ori;//下标访问会覆盖
        }
        键.clear()
    }
}

  由于 map 里的 key 是自动按字典序排序的,所以只要顺序遍历,找到第一个最大的就行了

/* 伪码 */
string max_key; int max_val = -1;
for (遍历 map) {
    if (it->second > max_val) {//用 ">" 来找最大,相等的不会再进来,以此保证找到的最大肯定是字典序排列的第一个
        max_val = it->second;
        max_key = it->first;
    }
}

 

题目比较简单,刷完后记录下我遇到的小问题:

1. 输入一整行用 getline():

        getline() 这样用, getline(cin, string类对象); 

2. map.find(键) 找到返回迭代器类型,找不到返回 map.end()

3. 一般 PA 剩余不通过的都是特例,比如这题:

        特例就是一个字符的字符串。同样以后见字符串类题目 PA 就想 1) 单个字符; 2) 是否空格、回车为题目特例字符;见数字类题目 PA 就想 1) 0

 

点击跳转代码地址

 

相关文章:

  • 2021-08-25
  • 2022-12-23
  • 2021-06-03
  • 2021-11-30
  • 2022-12-23
  • 2022-03-07
  • 2021-08-28
  • 2021-06-28
猜你喜欢
  • 2021-09-01
  • 2022-02-24
  • 2021-07-25
  • 2021-10-31
  • 2021-05-20
  • 2022-02-01
  • 2022-12-23
相关资源
相似解决方案