写点什么

【LeetCode】检查单词是否为句中其他单词的前缀 Java 题解

作者:Albert
  • 2022 年 8 月 21 日
    天津
  • 本文字数:964 字

    阅读完需:约 3 分钟

题目描述

给你一个字符串 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著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。
复制代码

思路分析

  • 今天的算法题目是字符串处理题目,题目描述比较长,我们需要查找 "searchWord 是否为句子 sentence 中任意单词的前缀"。理解这句话,searchWord 是 sentence 的子集且索引位置是 0。

  • 我们首先将 sentence 字符串按照 " " 切分,转化为 sentenceArr 数组,然后依次判断 searchWord 是否是每个单词的前缀。由于我们只需要返回最小下标,我们找到第一个下标即可跳出循环。具体实现代码如下,供参考。

通过代码

class Solution {    public int isPrefixOfWord(String sentence, String searchWord) {        int ans = -1;        String[] sentenceArr = sentence.split(" ");        int n = sentenceArr.length;        for (int i = 0; i < n; i++) {            if (sentenceArr[i].indexOf(searchWord) == 0) {                ans = i + 1;                break;            }        }        return ans;    }}
复制代码

总结

  • 上述代码的时间复杂度是 O(n), 空间复杂度是 O(1)

  • 坚持算法每日一题,加油!

发布于: 刚刚阅读数: 6
用户头像

Albert

关注

还未添加个人签名 2019.09.29 加入

LeetCode,略懂后端的RD

评论

发布
暂无评论
【LeetCode】检查单词是否为句中其他单词的前缀Java题解_Albert_InfoQ写作社区