請快速瀏覽一下我在網上找到的這個函數。如何修改此函數返回字符串而不是int
function longestCommonSubstring(string1, string2){
// init max value
var longestCommonSubstring = 0;
// init 2D array with 0
var table = Array(string1.length);
for(a = 0; a <= string1.length; a++){
table[a] = Array(string2.length);
for(b = 0; b <= string2.length; b++){
table[a][b] = 0;
}
}
// fill table
for(var i = 0; i < string1.length; i++){
for(var j = 0; j < string2.length; j++){
if(string1[i]==string2[j]){
if(table[i][j] == 0){
table[i+1][j+1] = 1;
} else {
table[i+1][j+1] = table[i][j] + 1;
}
if(table[i+1][j+1] > longestCommonSubstring){
longestCommonSubstring = table[i+1][j+1];
}
} else {
table[i+1][j+1] = 0;
}
}
}
return longestCommonSubstring;
}
它以int形式返回最長公共子串的長度。現在我的問題是,是否有可能修改此函數,以便它返回實際的字符串,而不是僅返回子字符串的長度,我在編程方面頗爲新穎,並且認爲只是修改這個secetion會幫助if(string1[i]==string2[j]){ push(string1[i]}
,但它並不是那麼容易,因爲我不希望在這兩個字符串中的每個字符都被添加到該數組中,只有那些完全相同的字符纔會被添加。 在此先感謝=)