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