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
仅由小写英文字符组成
问题描述
这道题采用遍历的方式,利用一个标志数字tag,如果遍历结束后tag为1则说明成功,否则在遍历过程中一定是遇到了不同的字符。如果m<n,说明字符串长度更短,则 直接返回-1,遍历过程中,字符相等则两个字符串都要后移一位,如果不相等则退出当前子循环,最后根据tag的值来确定返回字符串长度i-m还是返回-1。
class Solution:def strStr(self, haystack: str, needle: str) -> int:m,n=len(haystack),len(needle)if m<n:return -1for i in range(m):tag=1for j in range(n):if i<m:if haystack[i]==needle[j]:i+=1continueelse:tag=0breakelse:tag=0breakif tag==1:return i-nreturn -1
本题提交情况。
以上为本篇文章的全部内容,感谢你抽出宝贵的时间阅读这篇文章。如果你有任何疑问或建议,欢迎在评论区留言,我们一起交流进步。愿你的代码之路越走越顺,生活充满阳光!