题解 | #哈希表#查找两个字符串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;
}

全部评论

相关推荐

挣K存W养DOG:入职送金条全球游,路过缅甸停一下🐔
点赞 评论 收藏
分享
10-09 22:05
666 C++
找到工作就狠狠玩CSGO:报联合国演讲,报电子烟设计与制造
点赞 评论 收藏
分享
点赞 收藏 评论
分享
牛客网
牛客企业服务