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

浙公网安备 33010602011771号