• 1078. Bigram 分词『简单』


    题目来源于力扣(LeetCode

    一、题目

    1078. Bigram 分词

    题目相关标签:哈希表

    提示:

    • 1 <= text.length <= 1000
    • text 由一些用空格分隔的单词组成,每个单词都由小写英文字母组成
    • 1 <= first.length, second.length <= 10
    • first 和 second 由小写英文字母组成

    二、解题思路

    1. 根据题目提示:text 由一些用空格分隔的单词组成,那么对 text 字符串进行字符的分隔,得到字符串数组

    2. 倒序遍历字符串数组,查找结果集

      为什么要倒序?

      因为结果集的查找,倒序查找比正序查找更容易

    3. 遍历过程中,如果当前遍历元素的前两个元素与 first 单词相同,前一个元素与 second 单词相同,则该元素加入结果集中

    三、代码实现

    public static String[] findOcurrences(String text, String first, String second) {
        List<String> list = new ArrayList<>();
        // 根据空格进行分隔,得到一个个的单词
        String[] textArr = text.split(" ");
        // 对单词数组进行倒序遍历
        // 注意判断条件的限制,防止索引越界
        for (int i = textArr.length - 1; i > 1; i--) {
            // 对当前遍历元素判断其前一个元素是否 equals second
            // 前二个元素是否 equals first
            if (first.equals(textArr[i - 2]) && second.equals(textArr[i - 1])) {
                // 满足条件则加入数组
                list.add(textArr[i]);
                // 一旦满足判断条件,则当前遍历元素的前一个一定不满足条件,i 可以减少一次遍历
                i--;
            }
        }
        // list 列表转 String 数组
        return list.toArray(new String[list.size()]);
    }
    

    四、执行用时

    五、部分测试用例

    public static void main(String[] args) {
        String text = "alice is a good girl she is a good student";
        String first = "a";
        String second = "good";  // output:{"girl", "student"}
    
    //    String text = "we will we will rock you";
    //    String first = "we";
    //    String second = "will";  // output:{"we", "rock"}
        String[] result = findOcurrences(text, first, second);
        System.out.println(Arrays.toString(result));
    }
    
  • 相关阅读:
    Largest Rectangle in Histogram
    Valid Sudoku
    Set Matrix Zeroes
    Unique Paths
    Binary Tree Level Order Traversal II
    Binary Tree Level Order Traversal
    Path Sum II
    Path Sum
    Validate Binary Search Tree
    新手程序员 e
  • 原文地址:https://www.cnblogs.com/zhiyin1209/p/12891620.html
Copyright © 2020-2023  润新知