0
我要「合併」兩個字符串,看到代碼:合併在Java中兩個字符串重疊,並與允許的差異
public class Test {
public static void main(String[] args) {
printAllPossibleMergedString("abcdefdefd", "defdefdefghi");
}
public static void printAllPossibleMergedString(String a, String b) {
System.out.println(a + b);
int maxOverlap = Math.min(a.length(), b.length());
for (int i = 1; i <= maxOverlap; i++) {
if (b.startsWith(a.substring(a.length() - i, a.length()))) {
System.out.println(a + b.substring(i));
}
}
}
}
輸出:
abcdefdefddefdefdefghi
abcdefdefdefdefdefghi
abcdefdefdefdefghi
abcdefdefdefghi
現在我想這個方法成爲'容錯'(希望你能理解),這樣的事情:
void printAllPossibleMergedString(String a, String b, int tolerance);
所以,如果我做的:
// 'x' means a wrong character
printAllPossibleMergedString("abcdefdefx", "defdefdefghi", 1);
將輸出:
abcdefdefxdefdefdefghi
abcdefdefdefdefghi
abcdefdefdefghi
同時:
printAllPossibleMergedString("abcdefdefxx", "defdefdefghi", 1);
只能輸出:
abcdefdefxxdefdefdefghi
,當然還有:
printAllPossibleMergedString("abcdefdefxx", "defdefdefghi", 2);
將輸出:
abcdefdefxdefdefdefghi
abcdefdefdefdefghi
abcdefdefdefghi
因此,如何有效地實現這一點?
謝謝。