开发者社区> 问答> 正文

C++设计相应的数据结构和算法,,尽量高效的统计一篇英文文章(总单词数)里出现的所有英文单词,按照在文章中

按照在文章中首次出现的顺序打印输出该单词和它的出现次数

展开
收起
知与谁同 2018-07-15 09:03:02 1788 0
2 条回答
写回答
取消 提交回答
  • 用二叉平衡树就可以做到,树中每一个节点是一个单词,按照字典序比较单词的大小。按出现顺序输出的话,可以在每个节点上记录出现顺序,排序即可。复杂度O(nlogn)。
    2019-07-17 22:53:32
    赞同 展开评论 打赏
  • 阿里云开发者社区运营负责人。原云栖社区负责人。
    #include <iostream>
    #include <algorithm>
    #include <string>
    #include <map>
    #include <utility>
    #include <fstream>
    #include <cassert>
    using namespace std ;

    template<class _t1, class _t2>
    void pairprnt( const pair< _t1, _t2 > pa )
    {
    cout << pa.first << " " << pa.second << endl ;
    }

    void WordCalc( char* pszFilename )
    {
    ifstream fs( pszFilename ) ;assert( fs ) ;//文件流
    string str ;
    map<string, int> m ;
    while( fs >> str, m[str]++, fs ) ;//读入,统计,判断流状态
    for_each( m.begin(), m.end(), pairprnt<string,int> ) ;//打印
    }

    int main()
    {
    WordCalc( "d:/delete/readme.txt" ) ;
    }

    STL makes life easy!
    2019-07-17 22:53:32
    赞同 展开评论 打赏
问答排行榜
最热
最新

相关电子书

更多
“大数据+算法”助力B2B未来商业 立即下载
数据+算法定义新世界 立即下载
Apache Flink 流式应用中状态的数据结构定义升级 立即下载