写在前面
今天的这道题,还是关于字符串结构的一道题,接下来的一部分题目都会侧重于字符串结构,欢迎大家关注算法刷题专栏。
下面就一起来看一下解题过程吧。
题目解读
根据题目的描述来看,我们是要在一个长字符串中,寻找一些符号特征的单词。
要符合的特征是,通过第二个参数、第三个参数组合后,在长字符串中找到这个使用结构。
找到这个结构后,其后面的第一个单词就是我们要的预期值了,但是可能会是多个,所以在处理的时候不能直接使用indexOf来直接获取。
不然会漏掉很多值,导致结果错误。
这里可以通过逐步遍历的方式来解决,在遍历过程中,对当前位置和下一个位置的单词与第二个、第三个参数进行比较。
如何匹配的话,那么就可以拿到一个值,然后接着遍历。
直到遍历结束,就可以得到预期结果了。
下面来看一下具体的代码编写吧。
代码实现
本次代码执行如下所示,大家可以自行参考一下。
public class Solution { public static void main(String[] args) { Solution solution = new Solution(); System.out.println(Arrays.toString(solution.findOcurrences("alice is a good girl she is a good student", "a", "good"))); } public String[] findOcurrences(String text, String first, String second) { String[] textSplit = text.split(" "); int n = textSplit.length; List<String> list = new ArrayList<>(); for (int i = 0; i + 2 < n; i++) { if (textSplit[i].equals(first) && textSplit[i + 1].equals(second)){ list.add(textSplit[i + 2]); } } return list.toArray(new String[0]); } }
代码执行结果
这次代码执行速度还是不错的,但是这个内存排名,有点拉胯。
总结
这道题主要考察的字符串的使用,其中更细节的是关于字符串多个元素组合判断的使用。