写在前面
这道题,《检查单词是否为句中其他单词的前缀》,主要考察的就是关于字符串之间的比较。
下面就一起来看一下具体解法吧。
题目解读
根据题目的描述来看,其主要的目的是要在一个长字符串中,找出其中的以第二个字符串开头的单词位置。
并且保证了该长字符串中只包含纯字母单词,并且每个单词之间通过空格来隔开。
要遍历每一个单词,只需要通过split方法分割长字符串即可。
遍历过程中,可以通过indexOf来判断是否以第二个字符串开头。
两者结合就能得到结果了,下面来看一下具体的代码编写吧。
代码实现
本次执行代码如下所示,大家可以自行参考一下。
public class Solution { public static void main(String[] args) { Solution solution = new Solution(); System.out.println(solution.isPrefixOfWord("i love eating burger", "burg")); } public int isPrefixOfWord(String sentence, String searchWord) { String[] ss = sentence.split(" "); for (int i = 0; i < ss.length; i++) { if(ss[i].length() >= searchWord.length() && ss[i].indexOf(searchWord) == 0){ return i + 1; } } return -1; } }
代码执行结果
这次的代码执行就非常不错了,前几道题做的是一塌糊涂,这次应该是归功于先比对了一下长度。
其他思路
有的大佬使用了字典树和双指针的方式,感觉并不如我这个方式好,但是效率确实是高一些,有兴趣的话可以自行试一下。
总结
本题考察对字符串的对比操作,在这我本人使用了indexOf方法,有些取巧,但是基本上也是这么回事,主要是要在每次indexOf方法执行前先比对一下两个字符串的长度差距,如果前者小于后者,也就没有比较的意义了。