【題目】5416. 檢查單詞是否爲句中其他單詞的前綴
給你一個字符串 sentence 作爲句子並指定檢索詞爲 searchWord ,其中句子由若干用 單個空格 分隔的單詞組成。
請你檢查檢索詞 searchWord 是否爲句子 sentence 中任意單詞的前綴。
如果 searchWord 是某一個單詞的前綴,則返回句子 sentence 中該單詞所對應的下標(下標從 1 開始)。
如果 searchWord 是多個單詞的前綴,則返回匹配的第一個單詞的下標(最小下標)。
如果 searchWord 不是任何單詞的前綴,則返回 -1 。
字符串 S 的 「前綴」是 S 的任何前導連續子字符串。
示例 1:
輸入:sentence = "i love eating burger", searchWord = "burg"
輸出:4
解釋:"burg" 是 "burger" 的前綴,而 "burger" 是句子中第 4 個單詞。
示例 2:
輸入:sentence = "this problem is an easy problem", searchWord = "pro"
輸出:2
解釋:"pro" 是 "problem" 的前綴,而 "problem" 是句子中第 2 個也是第 6 個單詞,但是應該返回最小下標 2 。
示例 3:
輸入:sentence = "i am tired", searchWord = "you"
輸出:-1
解釋:"you" 不是句子中任何單詞的前綴。
示例 4:
輸入:sentence = "i use triple pillow", searchWord = "pill"
輸出:4
示例 5:
輸入:sentence = "hello from the other side", searchWord = "they"
輸出:-1
提示:
1 <= sentence.length <= 100
1 <= searchWord.length <= 10
sentence 由小寫英文字母和空格組成。
searchWord 由小寫英文字母組成。
前綴就是緊密附着於詞根的語素,中間不能插入其它成分,並且它的位置是固定的——-位於詞根之前。(引用自 前綴_百度百科 )
【解題思路1】
class Solution {
public int isPrefixOfWord(String sentence, String searchWord) {
int len = searchWord.length();
char[] sword = searchWord.toCharArray();
String[] word = sentence.split("\\s+");
for(int i = 0; i < word.length; i++){
if(len > word[i].length()){
continue;
}
int j = 0;
for(j = 0; j < len; j++){
if(word[i].charAt(j) != sword[j]){
break;
}
}
if(j == len){
return i + 1;
}
}
return -1;
}
}
內層循環判斷前綴和可以調用函數s.startsWith()
class Solution {
public int isPrefixOfWord(String sentence, String searchWord) {
int ret = -1;
String[] strings = sentence.split(" ");
for (int i = 0; i < strings.length; i++) {
String string = strings[i];
if (string.startsWith(searchWord)) {
return i + 1;
}
}
return ret;
}
}