Longest Starting Match
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);
}
}
Related examples in the same category