算法刷题(二十三):Bigram 分词

简介: 算法刷题(二十三):Bigram 分词

写在前面


今天的这道题,还是关于字符串结构的一道题,接下来的一部分题目都会侧重于字符串结构,欢迎大家关注算法刷题专栏。

下面就一起来看一下解题过程吧。

image.png

题目解读


根据题目的描述来看,我们是要在一个长字符串中,寻找一些符号特征的单词。

要符合的特征是,通过第二个参数、第三个参数组合后,在长字符串中找到这个使用结构。

找到这个结构后,其后面的第一个单词就是我们要的预期值了,但是可能会是多个,所以在处理的时候不能直接使用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]);
    }
}

代码执行结果


这次代码执行速度还是不错的,但是这个内存排名,有点拉胯。

image.png

总结


这道题主要考察的字符串的使用,其中更细节的是关于字符串多个元素组合判断的使用。


相关文章
|
6月前
|
机器学习/深度学习 存储 算法
【算法沉淀】刷题笔记:并查集 带权并查集+实战讲解
【算法沉淀】刷题笔记:并查集 带权并查集+实战讲解
|
5月前
|
存储 算法 C语言
【数据结构与算法 刷题系列】合并两个有序链表
【数据结构与算法 刷题系列】合并两个有序链表
|
1月前
|
数据可视化 搜索推荐 Python
Leecode 刷题笔记之可视化六大排序算法:冒泡、快速、归并、插入、选择、桶排序
这篇文章是关于LeetCode刷题笔记,主要介绍了六大排序算法(冒泡、快速、归并、插入、选择、桶排序)的Python实现及其可视化过程。
13 0
|
3月前
【刷题记录】最大公因数,最小公倍数(辗转相除法、欧几里得算法)
【刷题记录】最大公因数,最小公倍数(辗转相除法、欧几里得算法)
|
3月前
|
算法 Python
【Leetcode刷题Python】改进的算法,高效求一个数的因子
一个高效的Python函数用于找出一个整数的所有因子,通过仅遍历到该数平方根的范围来优化性能。
38 0
|
5月前
|
自然语言处理 算法 搜索推荐
分词算法的基本原理及应用
分词算法的基本原理及应用
|
5月前
|
机器学习/深度学习 自然语言处理 算法
分词算法在自然语言处理中的应用与性能比较
分词算法在自然语言处理中的应用与性能比较
|
5月前
|
算法 C++
【数据结构与算法】:关于时间复杂度与空间复杂度的计算(C/C++篇)——含Leetcode刷题-2
【数据结构与算法】:关于时间复杂度与空间复杂度的计算(C/C++篇)——含Leetcode刷题
|
5月前
|
算法 C++
【数据结构与算法】:关于时间复杂度与空间复杂度的计算(C/C++篇)——含Leetcode刷题-1
【数据结构与算法】:关于时间复杂度与空间复杂度的计算(C/C++篇)——含Leetcode刷题
|
4月前
|
机器学习/深度学习 自然语言处理 算法
分词算法在自然语言处理中的应用与性能比较
分词算法在自然语言处理中的应用与性能比较