美文网首页
A1071 Speech Patterns (25分)

A1071 Speech Patterns (25分)

作者: km15 | 来源:发表于2020-02-17 12:48 被阅读0次

    /*
    题意:
    1、统计出现的单词数,最多的那个
    单词定义为大小写字母、数字的组合
    除大小写字母,数字之外的字符都作为单词的分割负
    字母不区分大小写,且最后按小写字母输出

    解题:
    1、用map,一个string,一个int,统计出现次数
    2、但是大小写问题如何处理

    如何写呢,我滴吗

    learn && wrong:
    1、for记得用分隔号啊
    2、大写转为小写,是+=32
    3、思路
    (1)如果是有效字符,则加入当前字符,(记得大小写转换
    (2)、如果不是,则将当前单词字符+1,
    (3)之后跳过非有效字符
    (4)遍历MAP,找出最多次数
    4、字符串中可能出现连续的非空字符,所以得到一个单词之后必须while把它们全部跳过
    5、字符串内的开头可能存在非有效字符,此时会得到空的单词,所以需要加IF判断是否为空单词,是则跳过
    */

    #include <iostream>
    #include <string>
    #include <map>
    
    using namespace std;
    
    //检查是否符合数字,大小写字母
    bool check(char c) {
        if (c >= '0' && c <= '9') return true;
        if (c >= 'A' && c <= 'Z') return true;
        if (c >= 'a' && c <= 'z') return true;
        return false;
    }
    
    int main()
    {
        map<string, int> count;  //count计算字符串出现的次数
        string str;
        getline(cin, str);   //读入整行字符
        
        int i = 0;  //定义下标
        while (i < str.length()) {    //在字符串范围内
            string word;
            while (i < str.length() && check(str[i]) == true) {    //如果是查询的单词
                if (str[i] >= 'A' && str[i] <= 'z') {
                    str[i] += 32;   //将大写字符转为小写字母    !!!
                }
                word += str[i]; //单词末尾添加该字符
                i++;    //下标后移一位
            }
            if (word != "") {
                if (count.find(word) == count.end()) count[word] = 1;    //!!!
                else count[word]++;
            }
            while (i < str.length() && check(str[i]) == false) { //跳过非单词字符 1!!错在括号
                i++;
            }
        }
    
        string ans; //存放出现次数最多的单词
        int MAX = 0;    //出现单词次数最多的次数
        for (map<string, int>::iterator it = count.begin();it != count.end();it++) {
            if (it->second > MAX) {
                MAX = it->second;
                ans = it->first;
            }
        }
    
        cout << ans << " " << MAX << endl;
        return 0;
    }
    

    相关文章

      网友评论

          本文标题:A1071 Speech Patterns (25分)

          本文链接:https://www.haomeiwen.com/subject/ksjmfhtx.html