检查单词是否为句中其他单词的前缀
给你一个字符串 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 。
解题思路
既然是返回单词的下标,那就需要吧句子转化为数组,然后遍历数组里的单词有没有指定的检索词,如果有那就返回下标+1
(因为是从0开始的)
具体步骤如下:
- 第一步:将句子转化为数组;定义一个变量用来存放下标并初始化为-1
- 第二步:遍历数组,将当前单词从头开始截取,并与指定检索词匹配是否相同,如果相同则返回下标+1,
var isPrefixOfWord = function(sentence, searchWord) { let wordArr = sentence.split(" ") let res = -1 for(let i=0;i<wordArr.length;i++){ if(wordArr[i].substr(0,searchWord.length)===searchWord){ res = i+1 break } } return res };
知识点
split(separator,howmany)
方法用于把一个字符串分割成字符串数组。
第一个参数separator
:必传,可以是字符串或正则表达式,从该参数指定的地方分割。
第二个参数howmany
:可传可不传,该参数可指定返回的数组的最大长度。如果设置了该参数,返回的子串不会多于这个参数指定的数组。如果没有设置该参数,整个字符串都会被分割,不考虑它的长度。