题解 | #公共子串计算#时空复杂度n^2/n^2解法

公共子串计算

https://www.nowcoder.com/practice/98dc82c094e043ccb7e0570e5342dd1b

#include <unordered_map>
#include <iostream>
using namespace std;
/*
时间复杂度:n^2;
空间复杂度:n;
*/
int main() {
    int result = 0;
    string s,l;
    cin>>s>>l;
    int length_s = s.length();
    int length_l = l.length();
    //key为子串、int为长度
    unordered_map<string,int> s_map;
    unordered_map<string,int> l_map;
    //直接以子串作为key插入到unordered_map中,子串长度从1到length,进行遍历。
    for(int i=1;i<=length_s;i++){
        for(int j=0;j<length_s-i+1;j++){
            string temp = s.substr(j,i);
            if(s_map.find(temp)==s_map.end()) s_map.insert(make_pair(temp,temp.length()));
        }
    }
    for(int i=1;i<=length_l;i++){
        for(int j=0;j<length_l-i+1;j++){
            string temp = l.substr(j,i);
            if(l_map.find(temp)==l_map.end()) l_map.insert(make_pair(temp,temp.length()));
        }
    }
    unordered_map<string,int>::iterator itm;
    //找到键值相同的子串,并求最大值
    for(itm = s_map.begin();itm!=s_map.end();itm++){
        if(l_map.find(itm->first)!=l_map.end()&&itm->second>result){
        result = itm->second;
        }
    }
    cout<<result;
    return 0;
}

#我的实习求职记录#
全部评论

相关推荐

贺兰星辰:不要漏个人信息,除了简历模板不太好以外你这个个人简介是不是太夸大了...
点赞 评论 收藏
分享
牛客771574427号:恭喜你,华杰
点赞 评论 收藏
分享
点赞 收藏 评论
分享
牛客网
牛客企业服务