题解 | #公共子串计算#时空复杂度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;
}

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

相关推荐

昨天 18:09
门头沟学院 Java
苍穹外卖和谷粒商城这俩是不是烂大街了,还能做吗?
想去重庆的鸽子在吐槽:你不如把这俩做完自己搞明白再优化点再来问 何必贩卖焦虑
点赞 评论 收藏
分享
05-12 17:00
门头沟学院 Java
king122:你的项目描述至少要分点呀,要实习的话,你的描述可以使用什么技术,实现了什么难点,达成了哪些数字指标,这个数字指标尽量是真实的,这样面试应该会多很多,就这样自己包装一下,包装不好可以找我,我有几个大厂最近做过的实习项目也可以包装一下
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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