7-12 jmu-Java&Python-统计文字中的单词数量并按出现次数排序 (25分)(c++版)

(虽然不是c++的题
(却被迫用c++做

现在需要统计若干段文字(英文)中的单词数量,并且还需统计每个单词出现的次数。
注1:单词之间以空格(1个或多个空格)为间隔。
注2:忽略空行或者空格行。
基本版:
统计时,区分字母大小写,且不删除指定标点符号。
进阶版:

统计前,需要从文字中删除指定标点符号!.,😗?。 注意:所谓的删除,就是用1个空格替换掉相应字符。
统计单词时需要忽略单词的大小写。

输入说明
若干行英文,最后以!!!为结束。
输出说明
单词数量
出现次数排名前10的单词(次数按照降序排序,如果次数相同,则按照键值的字母升序排序)及出现次数。
输入样例1
failure is probably the fortification in your pole

it is like a peek your wallet as the thief when you
are thinking how to spend several hard-won lepta

when you are wondering whether new money it has laid
background because of you then at the heart of the

most lax alert and most low awareness and left it

godsend failed
!!!

输出样例1
46
the=4
it=3
you=3
and=2
are=2
is=2
most=2
of=2
when=2
your=2

输入样例2
Failure is probably The fortification in your pole!

It is like a peek your wallet as the thief when You
are thinking how to. spend several hard-won lepta.

when yoU are? wondering whether new money it has laid
background Because of: yOu?, then at the heart of the
Tom say: Who is the best? No one dare to say yes.
most lax alert and! most low awareness and* left it

godsend failed
!!!

输出样例2
54
the=5
is=3
it=3
you=3
and=2
are=2
most=2
of=2
say=2
to=2

#include<iostream>
#include<cstdio>
#include<string>
#include<ctime>
#include<cmath>
#include<cstring>
#include<algorithm>
#include<stack>
#include<climits>
#include<queue>
#include<map>
#include<set>
#include<sstream>
#include<unordered_map>
using namespace std;
typedef long long ll;
int main()
{
    //鬼哦
    //又打了好几个小时
    //呜呜呜还是不太会map    
    string s,sum="";
    cin>>s;
    int i,flag=0,j,count=0;
        while(s!="!!!!!"){
        for(i=0;i<s.length();i++){
            if(s[i]=='!'||s[i]=='.'||s[i]==','||s[i]==':'||s[i]=='?'||s[i]=='*'){
                s[i]=' ';
            }
            if(s[i]>='A'&&s[i]<='Z'){
                s[i]+='a'-'A';
            }
        }
        sum=sum+s;
        sum+=" ";
        cin>>s;
    }
        map<string,int> mp;
    string ss="";
    for(i=0;i<sum.length();i++){
        if(sum[i]==' ')
        {
            if(ss=="")
            {
            }
            else
            {
                int key=mp.count(ss);
                if(key>0)
                {
                    mp[ss]++;
                }
                else
                {
                    mp.insert(pair<string,int>(ss,1));
                    count++;
                }
            } flag=0;
            ss.clear();
            }else{
            ss+=sum[i];
            flag++;
           }
       }
    map<string,int>::iterator p,g;
    p=mp.begin();
    //g=p;
    // cout<<g->frist<<g->second<<endl;
    cout<<count<<endl;
    for(j=0; j<10; j++)
    {
        p=mp.end();
        p--;
        map<string,int>::iterator i=mp.end();
       for(i--;i!=(--mp.begin()); i--)
        {
            if(i->second!=-1){
                if(p->second <= i->second){
                    //break;
                    p=i;
                }
            }
        }
        cout<<p->first<<"="<<p->second<<endl;
        mp[p->first]=-1;
    }
   // cout<<i->first<<","<<i->second<<endl;
    return 0;
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
可以使用 Python 的字典(dict)来实现单词数量统计排序。 首先,我们需要读入文本文件,并将其转换为一个字符串。可以使用 Python 的 open 函数打开文件,并使用 read 方法读取文件内容。为了方便处理,我们可以将所有字母都转换为小写字母。 ```python with open('text.txt', 'r') as f: text = f.read().lower() ``` 接下来,我们需要将字符串拆成单个单词,并统计它们的出现次数。可以使用 Python 的 split 方法来拆字符串,并使用一个字典来存储每个单词出现次数。如果字典已经存在该单词,则将其出现次数加一;否则,在字典添加该单词并将其出现次数设置为一。 ```python word_count = {} for word in text.split(): if word in word_count: word_count[word] += 1 else: word_count[word] = 1 ``` 最后,我们可以根据单词出现次数对字典进行排序,并将结果打印出来。可以使用 Python 的 sorted 函数和 lambda 表达式来实现排序。 ```python sorted_word_count = sorted(word_count.items(), key=lambda x: x[1], reverse=True) for word, count in sorted_word_count: print(f'{word}: {count}') ``` 完整代码如下: ```python with open('text.txt', 'r') as f: text = f.read().lower() word_count = {} for word in text.split(): if word in word_count: word_count[word] += 1 else: word_count[word] = 1 sorted_word_count = sorted(word_count.items(), key=lambda x: x[1], reverse=True) for word, count in sorted_word_count: print(f'{word}: {count}') ``` 其,text.txt 是要统计的文本文件的文件名。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值