1. 程式人生 > 實用技巧 >1455. 檢查單詞是否為句中其他單詞的字首

1455. 檢查單詞是否為句中其他單詞的字首

題目:
給你一個字串 sentence 作為句子並指定檢索詞為 searchWord ,其中句子由若干用 單個空格 分隔的單片語成。
請你檢查檢索詞 searchWord 是否為句子 sentence 中任意單詞的字首。
如果searchWord 是某一個單詞的字首,則返回句子sentence 中該單詞所對應的下標(下標從 1 開始)。
如果 searchWord 是多個單詞的字首,則返回匹配的第一個單詞的下標(最小下標)。
如果 searchWord 不是任何單詞的字首,則返回 -1 。
字串 S 的 「字首」是 S 的任何前導連續子字串。

解法:分治法(想當於二分查詢)
程式碼:
class Solution {
public int isPrefixOfWord(String sentence, String searchWord) {
String[] str = sentence.split(" ");
return prefixOfWord(str,searchWord,0,str.length-1);
}

public int prefixOfWord(String[] str,String searchWord,int l,int r){
    if(l==r){   //判斷是否是字首
        // if(searchWord.length()>str[l].length()){
        //     return -1;
        // }
        // for(int i=0;i<searchWord.length();i++){
        //     if(str[l].charAt(i)!=searchWord.charAt(i)){
        //         return -1;
        //     }
        // }
        // return l+1;
        return str[l].startsWith(searchWord)?l+1,-1;
    }
    int m = (l+r)/2;
    int lIndex = prefixOfWord(str,searchWord,l,m);
    int rIndex = prefixOfWord(str,searchWord,m+1,r);
    return lIndex==-1?rIndex:lIndex;
}

}