文章

61

粉丝

98

获赞

17

访问

17.6k

头像
字母频率 题解:c++ vector、set、count实现
P1019 贵州大学机试题
发布于2024年3月13日 10:47
阅读数 150

#include<bits/stdc++.h>
using namespace std;

int main(){
    string s;
    getline(cin, s);
    vector<char> vs;
    set<char>ss;
    //将字符串转换成小写
    transform(s.begin(), s.end(), s.begin(), ::tolower);
    //分别将字符串存入动态数组和集合中
    for(int i = 0; i < s.size(); i++){
        if(s[i] != ' '){
            vs.push_back(s[i]);
            ss.insert(s[i]);
        }
    }
    int len = ss.size();
    set<char> ::iterator it;
    char alp[len];    //存放字符串中所有出现的字母
    int i = 0;
    while(!ss.empty()){     //获得字符串中所有出现的字符
        it = ss.end();
        --it;
        alp[i++] = *it;
        ss.erase(it);
    }

    int sum[len];         //存放字符串中所有出现的字母
    for( i = 0; i < len; i++)
        sum[i] = count(vs.begin(), vs.end(), alp[i]);

   int m = 0;
    for(i = 1; i < len; i++){
        if(sum[i] > sum[m])
            m = i;
    }

    cout << alp[m] << " " << sum[m] << endl;
    return 0;
}
...
登录查看完整内容


登录后发布评论

暂无评论,来抢沙发