【LeetCode】检查单词是否为句中其他单词的前缀 Java 题解
题目描述
给你一个字符串 sentence 作为句子并指定检索词为 searchWord ,其中句子由若干用 单个空格 分隔的单词组成。请你检查检索词 searchWord 是否为句子 sentence 中任意单词的前缀。
如果 searchWord 是某一个单词的前缀,则返回句子 sentence 中该单词所对应的下标(下标从 1 开始)。如果 searchWord 是多个单词的前缀,则返回匹配的第一个单词的下标(最小下标)。如果 searchWord 不是任何单词的前缀,则返回 -1 。
字符串 s 的 前缀 是 s 的任何前导连续子字符串。
复制代码
思路分析
今天的算法题目是字符串处理题目,题目描述比较长,我们需要查找 "searchWord 是否为句子 sentence 中任意单词的前缀"。理解这句话,searchWord 是 sentence 的子集且索引位置是 0。
我们首先将 sentence 字符串按照 " " 切分,转化为 sentenceArr 数组,然后依次判断 searchWord 是否是每个单词的前缀。由于我们只需要返回最小下标,我们找到第一个下标即可跳出循环。具体实现代码如下,供参考。
通过代码
复制代码
总结
上述代码的时间复杂度是 O(n), 空间复杂度是 O(1)
坚持算法每日一题,加油!
版权声明: 本文为 InfoQ 作者【Albert】的原创文章。
原文链接:【http://xie.infoq.cn/article/a86d98c482d89acdce0a2c53d】。文章转载请联系作者。
评论