题解 | #子串计算#

子串计算

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的字典序进行排序,和题目符合。

全部评论

相关推荐

一tiao酸菜鱼:秋招还没正式开始呢,就准备有结果了。。。。?
点赞 评论 收藏
分享
每晚夜里独自颤抖:把华北改为华南再试一试,应该就没啥问题了。改完可能都不用投,别人主动联系了。
点赞 评论 收藏
分享
评论
21
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务