美文网首页
算法与数据结构练习中常犯错误4——字符串相关算法

算法与数据结构练习中常犯错误4——字符串相关算法

作者: 王侦 | 来源:发表于2019-11-29 10:16 被阅读0次

3.字符串

3.1 字符串压缩

3.2 字符串查找——trie树

3.3 子字符串查找

3.3.1 暴力解法

3.3.2 DFA

3.3.3 KMP

3.3.4 Boyer-Moore

  • 47)忘了对数组初始化
        // 忘了对数组进行初始化
        goodSuffix = new int[pattern.length()];
        prefix = new boolean[pattern.length()];
  • 48)calculateGoodSuffix()
            while (j >= 0 && pattern.charAt(j) == pattern.charAt(pattern.length() - 1 - i + j)) {
                --j;
                ++k;
                // 这个更新应该放在循环内部而不是外部
                goodSuffix[k] = j + 1;
            }
  • 49)好后缀规则的适用条件
            int len = pattern.length() - 1 - j;
            // 对于好后缀规则,必须len > 0才成立,如果不加这一条会出错
            if (len > 0) {

3.4 正则表达式

  • 50)lp多种情况的考虑
            int lp = i;
            // (和|需要压入栈,以备后续添加ε-转换
            if (c == '(' || c == '|') {
                stack.push(i);
            } else if (c == ')') {
                int or = stack.pop();
                if (regex.charAt(or) == '|') {
                    // 这里不能另外定义left,还必须是lp,因为或后面也可能是*
                    lp = stack.pop();
                    G.addEdge(lp, or + 1);
                    G.addEdge(or, i);
                } else if (regex.charAt(or) == '('){
                    // 此时lp为左括号
                    lp = or;
                }
            }
            // 这里合并了A*和(xxx)*两种情况,通过lp来合并
            if (i < m - 1 && regex.charAt(i + 1) == '*') {
                G.addEdge(lp, i + 1);
                G.addEdge(i + 1, lp);
            }

3.5 后缀数组

相关文章

  • 算法与数据结构练习中常犯错误4——字符串相关算法

    3.字符串 3.1 字符串压缩 3.2 字符串查找——trie树 3.3 子字符串查找 3.3.1 暴力解法 3....

  • 长期计划安排

    一、数据结构与算法分析 参考书 数据结构与算法分析:C语言描述 算法(第四版) 算法导论 课程相关 MOOC 邓俊...

  • 前端干货 -03

    37. 算法 算法地址 数据结构与算法 JavaScript 描述. 章节练习https://github.com...

  • 字符串匹配算法

    以下为学习 《数据结构与算法之美 -- 字符串匹配》 的记录。 BF算法 即暴力匹配算法,循环遍历匹配。 RK算法...

  • 数据结构与算法--Boyer-Moore和Rabin-Karp子

    数据结构与算法--Boyer-Moore和Rabin-Karp子字符串查找 Boyer-Moore字符串查找算法 ...

  • 字符串匹配算法

    拉勾教育中《重学数据结构与算法》第08节讲到,字符串和如何应对字符串匹配算法。 字符串 字符串(string) 是...

  • 数据结构与算法 - 查找

    数据结构与算法系列文章数据结构与算法 - 时间复杂度数据结构与算法 - 线性表数据结构与算法 - 树形结构数据结构...

  • all

    算法与数据结构 常见算法类型 排序算法(冒泡、插入、选择、快排、希尔、堆排、归并、桶排、基数、计数)、字符串操作、...

  • 数据结构与算法 - 树形结构

    数据结构与算法系列文章数据结构与算法 - 时间复杂度数据结构与算法 - 线性表数据结构与算法 - 树形结构 目录 ...

  • 思维导图之数据结构+算法

    数据结构+算法 = 程序 数据结构比较 参考文章 数据结构与算法数据结构与算法(java)

网友评论

      本文标题:算法与数据结构练习中常犯错误4——字符串相关算法

      本文链接:https://www.haomeiwen.com/subject/diywwctx.html