题解 | #查找两个字符串a,b中的最长公共子串#
查找两个字符串a,b中的最长公共子串
https://www.nowcoder.com/practice/181a1a71c7574266ad07f9739f791506
#include <iostream> #include <string> #include <vector> using namespace std; int main() { string str1,str2; getline(cin,str1); getline(cin,str2); string temp; bool flag = false; string smallStr = str1.size()>str2.size()?str2:str1; string biggerStr = str1.size()>str2.size()?str1:str2; for(int i = smallStr.size();i!=0;--i) { for(int j = 0;j+i!=smallStr.size()+1;++j) { string sstr = smallStr.substr(j,i); if(biggerStr.find(sstr)!=string::npos) { temp = sstr; flag = true; break; } } if(flag) break; } cout<<temp; } // 64 位输出请用 printf("%lld")
getline读取以后会舍弃'\n'这样的换行符号,不需要再cin.ignore(),cin.ignore()是忽略cin的下一个字符