public class mergeStringsOnOverlap {
public static String mergeOnOverlap(String a, String b) {
int lenA = a.length();
int lenB = b.length();
int maxPossibleOverlapLen = Math.min(lenA, lenB);
int overlap = 0;
// Try longest overlap first
for (int len = maxPossibleOverlapLen; len > 0; len--) {
if (a.regionMatches(lenA - len, b, 0, len)) {
overlap = len;
break;
}
}
return a + b.substring(overlap);
}
public static void main(String[] args) {
String a = "fantasy time travel technology";
String b = "technology extraterrestrial life";
System.out.println(mergeOnOverlap(a, b));
}
}
/*
run:
fantasy time travel technology extraterrestrial life
*/