• leetcode刷题日志-28.找出字符串中第一个匹配项的下标


    给你两个字符串 haystack 和 needle ,请你在 haystack 字符串中找出 needle 字符串的第一个匹配项的下标(下标从 0 开始)。如果 needle 不是 haystack 的一部分,则返回 -1 。

    示例 1

    输入:haystack = “sadbutsad”, needle = “sad”
    输出:0
    解释:“sad” 在下标 0 和 6 处匹配。
    第一个匹配项的下标是 0 ,所以返回 0 。
    示例 2

    输入:haystack = “leetcode”, needle = “leeto”
    输出:-1
    解释:“leeto” 没有在 “leetcode” 中出现,所以返回 -1 。

    提示:

    • 1 <= haystack.length, needle.length <= 104
    • haystack 和 needle 仅由小写英文字符组成

    思路:
    我知道这道题可以用KMP算法,奈何太菜不会写,下去好好研究一下,只能用最朴素的解法,以每个字母为开头,遍历是否存在完全匹配的串。
    算法的时间复杂度为O(n*m)。注:KMP算法的时间复杂度为O(m+n)。

    class Solution {
        public int strStr(String haystack, String needle) {
           for(int i = 0;i<=haystack.length()-needle.length();i++)
           {
               boolean flag = true;
               for(int j=0;j<needle.length();j++)
               {
                   if(haystack.charAt(i+j) != needle.charAt(j))
                   {
                        flag = false;
                        break;
                   }
               }
               if(flag)
               {
                   return i;
               }
           }
           return -1;
    }
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
  • 相关阅读:
    JavaFX Scene Builder 工具详解
    vs2019 新建项目显示空白,无法新建文件
    解读LangChain
    MySQL的Redo log 、Undo log、 Binlog
    单元测试系统化讲解之Mockito
    [报错]RuntimeError: expected scalar type Double but found Float(torch)
    C++刷题测试样例输入输出
    堆 (带图详解)
    Redis(消息队列Stream)
    【二叉树】树的子结构
  • 原文地址:https://blog.csdn.net/qq_43514707/article/details/134493675