天天看點

7-12 jmu-Java&Python-統計文字中的單詞數量并按出現次數排序 (25分)(c++版)(雖然不是c++的題 (卻被迫用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;
}
           
pta