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;
}

}

posted @ 2020-11-26 12:14  for_ward  阅读(28)  评论(0)    收藏  举报