题解 | #子串计算#

子串计算

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


#include<bits/stdc++.h>
using namespace std;
map<string,int> m;
int main(){
    char str[101];
    fgets(str,101,stdin);
    string str1 = str;
    str1.pop_back();//去掉最后换行符
    
    for(int i = 1 ; i <= str1.size();i++){//i从1开始,这样j-i才能最开始是1开始
        for(int j = 0 ; j < i ; j++){
            string key = str1.substr(j,i-j);
            m[key]++;//出现的子串进行累加
        }
    }
    map<string,int>::iterator it;
    for(it = m.begin(); it != m.end();it++){
        if(it->second >1){
            printf("%s %d\n",it->first.c_str(),it->second);
        }
    }
}

全部评论

相关推荐

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