给出了两个字符串,我们必须找到最长公共子字符串的长度。我不知道我的代码有什么问题。
外部循环采用B的子字符串,内部循环一次将子字符串增加一个字符。
输入" www.lintcode.com代码"," www.ninechapter.com代码"输出为5但应该是9
public class Solution {
/**
* @param A, B: Two string.
* @return: the length of the longest common substring.
*/
public int longestCommonSubstring(String A, String B) {
// write your code here
int k = 0, temp = 0;
if(B.length() == 0){
return 0;
}
for(int i = 0; i < B.length()-1; i++){
String bb = B.substring(i, i+1);
if(A.contains(bb)){
for(int j = 1; j < A.length()-i; j++){
String bbb = B.substring(i, i+j);
if(!A.contains(bbb))
break;
temp = bbb.length();
}
}
if(temp > k)
k = temp;
}
return k;
}
}
答案 0 :(得分:1)
只需替换它:
for(int j = 1; j < B.length()-i+1; j++)
用这个:
typeOf[this.type]
答案 1 :(得分:0)
我相信你可以用这个来减少你的功能大小...不确定你的方法是否更高效但是... ...
public int longestCommonSubstring(String A, String B) {
int longestSubstring = 0;
for (int x=0; x < A.length(); x++) {
for (int y=x; y < A.length() + 1; y++) {
String testString = A.substring(x,y);
if (B.contains(testString) && (testString.length() > longestSubstring)) {
longestSubstring = testString.length();
}
}
}
return longestSubstring;
}