题解 | #最长公共子串#
最长公共子串
http://www.nowcoder.com/practice/f33f5adc55f444baa0e0ca87ad8a6aac
class Solution { public: /** * longest common substring * @param str1 string字符串 the string * @param str2 string字符串 the string * @return string字符串 */ //思想很简单,就是循环对比 string LCS(string str1, string str2) { // write code here int str1len=str1.size(); int str2len=str2.size(); int max=0; string temp; for(int i=0;i<str1len;i++) { for(int j=0;j<str2len;j++) { if(str1[i]==str2[j]) { int sum=0;string work; while(str1[i]==str2[j]&&i<str1len&&j<str2len) { work+=str1[i]; sum++; i++; j++; } if(sum>max)//更新最长的子串 { max=sum; temp=work; } i-=sum;//i回溯 j-=sum;//j回溯 } } } return temp;//返回最长子串 } };