28. 找出字符串中第一个匹配项的下标
1. 题目
给你两个字符串 haystack
和 needle
,请你在 haystack
字符串中找出 needle
字符串的第一个匹配项的下标(下标从 0 开始)。如果 needle
不是 haystack
的一部分,则返回 -1
。
示例 1:
1 | 输入:haystack = "sadbutsad", needle = "sad" |
示例 2:
1 | 输入:haystack = "leetcode", needle = "leeto" |
提示:
1 <= haystack.length, needle.length <= 104
haystack
和needle
仅由小写英文字符组成
2. 思路
- 将目标
haystack
与needle
字符串直接转换为字符数组 - 开设一个新方法
match
用于匹配needle
是否位于haystack
的指定下标startIndex
中 match
方法将从startIndex
下标开始比较haystack
中的字符是否与needle
一致- 当遍历过程中发现任何一个字符不匹配,则
match
方法返回false
- 如果完成遍历,则
match
方法返回true
- 当遍历过程中发现任何一个字符不匹配,则
- 在主方法中遍历所有的
haystack
下标,并调用match
方法进行判断,当match
方法能完成匹配时,则直接返回进行匹配的startIndex
3. 代码
1 | class Solution { |
4. 复杂度
- 时间复杂度:
O(n * m)
- 空间复杂度:
O(n + m)