zoukankan      html  css  js  c++  java
  • A1071 Speech Patterns (25分)

    思路如下

      每个 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

    点击跳转代码地址

     
  • 相关阅读:
    MySQL查询缓存
    MySQL复制相关参数详解
    MySQL复制机制
    MySQL数据库的多表查询操作
    MySQL数据库单表查询基本操作及DML语句
    Hadoop大数据系列汇总
    MySQL数据库之日志功能详解
    MySQL数据库扫盲
    MySQL数据库之数据类型及基本使用详解
    MySQL数据库之日志管理
  • 原文地址:https://www.cnblogs.com/bEngi1/p/14353788.html
Copyright © 2011-2022 走看看