代码随想录训练营 Day09 - 字符串(下)

简介: 代码随想录训练营 Day09 - 字符串(下)

概念


KMP 算法,战略性放弃,等到周末再研究研究 。


作业题


28. 找出字符串中第一个匹配项的下标

https://programmercarl.com/0028.%E5%AE%9E%E7%8E%B0strStr.html#%E5%85%B6%E4%BB%96%E8%AF%AD%E8%A8%80%E7%89%88%E6%9C%AC

class Solution {
    /**
     * 基于窗口滑动的算法
     * <p>
     * 时间复杂度:O(m*n)
     * 空间复杂度:O(1)
     * 注:n为haystack的长度,m为needle的长度
     */
    public int strStr(String haystack, String needle) {
        int m = needle.length();
        // 当 needle 是空字符串时我们应当返回 0
        if (m == 0) {
            return 0;
        }
        int n = haystack.length();
        if (n < m) {
            return -1;
        }
        int i = 0;
        int j = 0;
        while (i < n - m + 1) {
            // 找到首字母相等
            while (i < n && haystack.charAt(i) != needle.charAt(j)) {
                i++;
            }
            if (i == n) {// 没有首字母相等的
                return -1;
            }
            // 遍历后续字符,判断是否相等
            i++;
            j++;
            while (i < n && j < m && haystack.charAt(i) == needle.charAt(j)) {
                i++;
                j++;
            }
            if (j == m) {// 找到
                return i - j;
            } else {// 未找到
                i -= j - 1;
                j = 0;
            }
        }
        return -1;
    }
}


总结


字符串


  • 如果题目关键的部分直接用库函数就可以解决,建议不要使用库函数;
    如果库函数仅仅是 解题过程中的一小部分,并且自己已经很清楚这个库函数的内部实现原理的话,可以考虑使用库函数。


双指针


  • 数组、链表、字符串等题型中的常客
  • 反转字符串
  • 替换空格
  • 移除元素
  • 删除冗余空格
  • 反转字符串
  • KMP

目录
相关文章
|
IDE Java API
代码随想录训练营 Day01- 数组(上)
代码随想录训练营 Day01- 数组(上)
34 0
代码随想录训练营 Day02 - 数组(下)
代码随想录训练营 Day02 - 数组(下)
34 0
代码随想录训练营 Day24 - 回溯(一)
代码随想录训练营 Day24 - 回溯(一)
36 0
|
9月前
|
算法
代码随想录算法训练营第二十四天 | LeetCode 77.组合
代码随想录算法训练营第二十四天 | LeetCode 77.组合
76 0
|
10月前
|
存储 搜索推荐 Java
《代码随想录》刷题笔记——数组篇【java实现】
《代码随想录》刷题笔记——数组篇【java实现】
77 0
代码随想录训练营 Day08 - 字符串(上)
代码随想录训练营 Day08 - 字符串(上)
34 2
|
12月前
|
算法
代码随想录算法训练营 | 数组小结
代码随想录算法训练营 | 数组小结
代码随想录训练营 Day04 - 链表(下)
代码随想录训练营 Day04 - 链表(下)
38 0
|
存储
代码随想录训练营 Day03- 链表(上)
代码随想录训练营 Day03- 链表(上)
61 0
【C语言】刷题训练营——“ 牛客语法篇 (10) ”
🏺BC93 统计数据正负个数🏺🏺BC93 统计数据正负个数🏺