WAP返回两个字符串

时间:2015-11-12 16:56:05

标签: java string

给出了两个字符串,我们必须找到最长公共子字符串的长度。我不知道我的代码有什么问题。

外部循环采用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;
}

}

2 个答案:

答案 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;
}