1. 程式人生 > 其它 >Java實現獲取兩個字串中最大相同子串

Java實現獲取兩個字串中最大相同子串

技術標籤:演算法java

只有一個最大相同字串的情況

public String getMaxSameString(String str1,String str2){
        if(str1 != null && str2 != null){
            String maxStr = (str1.length() >= str2.length())? str1 : str2;
            String minStr = (str1.length() < str2.length())? str1 : str2;
            int
length = minStr.length(); for(int i = 0;i < length;i++){ for(int x = 0,y = length - i;y <= length;x++,y++){ String subStr = minStr.substring(x,y); if(maxStr.contains(subStr)){ return subStr; }
} } } return null; }

有多個相同最大相同字串的方法(也可用集合來儲存)

public String[] getMaxSameStrings(String str1, String str2) {
        if (str1 != null && str2 != null) {
            StringBuilder str = new StringBuilder();
            String maxString = (str1.
length() > str2.length()) ? str1 : str2; String minString = (str1.length() > str2.length()) ? str2 : str1; int len = minString.length(); for (int i = 0; i < len; i++) { for (int x = 0, y = len - i; y <= len; x++, y++) { String subString = minString.substring(x, y); if (maxString.contains(subString)) { str.append(subString).append(","); } } //限定只獲取最大相同子串 if (str.length() != 0) { break; } } return str.toString().replaceAll(",$", "").split(","); } return null; }