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 <= 104haystack和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)
