题解 | #子串计算#

子串计算

http://www.nowcoder.com/practice/bcad754c91a54994be31a239996e7c11

#include<iostream>
#include<map>
#include<string>
using namespace std;

int main(){
    map<string, int >myMap;
    string str;
    cin>>str;
    for(int i = 0; i < str.size(); i++){
        for(int j = i; j < str.size(); j++){
            myMap[str.substr(i,j-i+1)]++;
        }
    }
    for(map<string, int>::iterator it = myMap.begin(); it != myMap.end(); it++){
        if(it->second>1) cout<<it->first<<" "<<it->second<<endl;
    }
    return 0;
}

使用map来定义字符串到int的映射,int的初始值自动是0
遍历字符串的所有子串,然后利用map进行计数,最后输出即可。
要注意map底层使用红黑树来实现,所以map的排序刚好是按照string的字典序进行排序,和题目符合。

全部评论

相关推荐

18 收藏 评论
分享
牛客网
牛客企业服务