题解 | #哈希表#查找两个字符串a,b中的最长公共子串

查找两个字符串a,b中的最长公共子串

https://www.nowcoder.com/practice/181a1a71c7574266ad07f9739f791506

#include <iostream>
#include <unordered_map>
using namespace std;

int main() {
    string short_str,long_str,temp;
    cin>>short_str>>long_str;
    if(short_str.length()>long_str.length()) swap(short_str,long_str); 
    string result="";
    int length_s = short_str.length();
    int length_l = long_str.length();
    for(int l=1;l<=length_s;l++){
        unordered_map<string,int> dic;
        for(int i=0;i<length_l-l+1;i++){
            if(dic.find(long_str.substr(i,l))==dic.end()){
                dic.insert(make_pair(long_str.substr(i,l),1));
            }
        }
        for(int i=0;i<length_s-l+1;i++){
            if(dic.find(short_str.substr(i,l))!=dic.end()){
                result = short_str.substr(i,l);
                break;
            }
        }
    } 
    cout<<result;
    return 0;
}

全部评论

相关推荐

不要停下啊:大二打开牛客,你有机会开卷了,卷起来,去找课程学习,在牛客上看看大家面试笔试都需要会什么,岗位有什么需求就去学什么,努力的人就一定会有收获,这句话从来都经得起考验,像我现在大三了啥也不会,被迫强行考研,炼狱难度开局,啥也不会,找工作没希望了,考研有丝丝机会
点赞 评论 收藏
分享
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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