Java tutorial
public class Util { public static String longestStartingMatch(String source1, String source2) { /** * I starting with the regex lookingAt() but it wasn't working for the test * cases I had (comparison of BigDecimals... DaC seems to work ok. */ int min = 0; int max = source1.length(); int cur = max / 2; while (true) { if (source2.regionMatches(0, source1, 0, cur)) { min = cur; cur += (max - cur) / 2; if (cur == min) { if (source2.regionMatches(0, source1, 0, max)) cur = max; break; } } else { max = cur; cur -= (cur - min) / 2; if (cur == max) { if (source2.regionMatches(0, source1, 0, min)) cur = min; break; } } } return source2.substring(0, cur); } }