我有一個程序,創建一個類字典,其中它填充字符串arrayList與命令行參數(按字母順序,所有不同長度)給出的單詞。無論如何,我需要實現二分查找,以在字典中查找前綴作爲回溯方法的一部分。當前綴長於字典中的單詞時,我遇到了問題---我試圖調整這種情況的二進制搜索,但它產生了不正確的結果。我真的不明白二進制搜索足以解決這個問題。如果我不考慮前綴長於一個單詞的問題,那麼.subString會生成字符串indexoutofbound。任何幫助將不勝感激。二進制搜索與字前綴字符串越界
public int searchPrefix(String prefixKey){
int minIndex=0;
int maxIndex= newDictionary.size()-1;
return searchPrefix(prefixKey, minIndex,maxIndex);
}
public int searchPrefix(String prefixKey, int minIndex, int maxIndex){
if(minIndex>maxIndex){
return-1;
}
int midIndex=(maxIndex-minIndex)/2+minIndex;
if (prefixKey.length()>newDictionary.get(midIndex).length()){
return searchPrefix(prefixKey, midIndex+1,maxIndex);
}
else if(newDictionary.get(midIndex).length(<prefixKey.length()&&newDictionary.get(midIndex).compareTo(prefixKey.substring(0,newDictionary.get(midIndex).length()))>0){
return searchPrefix(prefixKey,minIndex,maxIndex);
}
else if(newDictionary.get(midIndex).substring(0,prefixKey.length()).compareTo(prefixKey)>0){
return searchPrefix(prefixKey,minIndex,maxIndex-1);
}
else if(newDictionary.get(midIndex).length()<prefixKey.length()&&newDictionary.get(midIndex).compareTo(prefixKey.substring(0,newDictionary.get(midIndex).length()))<0){
return searchPrefix(prefixKey,minIndex,maxIndex);
}
else if(newDictionary.get(midIndex).substring(0,prefixKey.length()).compareTo(prefixKey)<0){
return searchPrefix(prefixKey, midIndex+1,maxIndex);
}
else
return midIndex;
}
我不認爲這是有用的。給定字典「abc」,「abcd」,「abcde」...「abcdefgh」,在索引2處找到鍵「abc」.OP沒有提供足夠的輸入用於任何可靠的編碼。 – laune
是的,這就像檢查包含,看字典可能有助於決定。 – Saravana
@Amy Gold你能分享字典嗎? – Saravana