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
????????本題提交情況。
?
????????以上為本篇文章的全部內容,感謝你抽出寶貴的時間閱讀這篇文章。如果你有任何疑問或建議,歡迎在評論區留言,我們一起交流進步。愿你的代碼之路越走越順,生活充滿陽光!??