yankewei / LeetCode

LeetCode 问题的解决方法
MIT License
6 stars 0 forks source link

检查单词是否为句中其他单词的前缀 #154

Open yankewei opened 2 years ago

yankewei commented 2 years ago

给你一个字符串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" 不是句子中任何单词的前缀。

提示:

来源:力扣(LeetCode) 链接:https://leetcode.cn/problems/check-if-a-word-occurs-as-a-prefix-of-any-word-in-a-sentence 著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

yankewei commented 2 years ago

比较简单的字符串匹配

class Solution {

    /**
     * @param String $sentence
     * @param String $searchWord
     * @return Integer
     */
    function isPrefixOfWord($sentence, $searchWord) {
        $words = explode(' ', $sentence);

        foreach ($words as $key => $word) {
            if (str_starts_with($word, $searchWord)) {
                return $key+1;
            }
        }

        return -1;
    }
}