我觉得这个解法更容易理解些,
1、其中while,就让它自动遍历所有的字符串长度
2、外部的length代表整个相同的大小,处于遍历的外部
3、在for内的count,在每一轮,都会被更新掉,便于最长的长度的字符串返回
class Solution {
public:
string LCS(string str1, string str2) {
int length = 0;//在外部可以保存当中字串长相同的长度,与临时每次while释放的count左比较
string res = "";
//遍历s1+s2每个起始点
for(int i = 0; i < str1.length(); i++){
for(int j = 0; j < str2.length(); j++){
int count = 0;
string newStr = "";
int x = i, y = j;
//比较每个起点为始的子串,要保持连续,找最长的那串
while(x < str1.length() && y < str2.length() && str1[x] == str2[y]){
newStr += str1[x];
x++;
y++;
count++;
}
//存在更长字符串,则更新进更大的长度子串
if(length < count){
length = count;
res = newStr;
}
}
}
return res;
}
};