我的代码正确计算了间隔的起始位置,但没有计算结束位置:
int left;
int bot = 0; int top = textLength;
while(bot != top)
{
int mid = (bot+top)/2;
if(pattern.compareTo(text.substring(suffixArray.get(mid))) > 0) bot = mid + 1;
else top = mid;
}
left = bot;
int right;
bot = left; top = textLength;
while(bot != top)
{
int mid = (bot+top)/2;
if(pattern.compareTo(text.substring(suffixArray.get(mid))) < 0) top = mid;
else bot = mid+1;
}
right = bot;
我将它与互联网上的几个伪代码进行了比较,我真的不明白为什么它不起作用。我错过了什么?