char截取字符串_字符串的排列(滑动窗口)
生活随笔
收集整理的這篇文章主要介紹了
char截取字符串_字符串的排列(滑动窗口)
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
題目:
給定兩個字符串?s1?和?s2,寫一個函數(shù)來判斷?s2?是否包含?s1?的排列。
換句話說,第一個字符串的排列之一是第二個字符串的子串。
示例1:
輸入: s1 = "ab" s2 = "eidbaooo"輸出: True解釋:?s2?包含?s1?的排列之一?("ba").示例2:
輸入: s1= "ab" s2 = "eidboaoo"輸出: False注意:
輸入的字符串只包含小寫字母
兩個字符串的長度都在 [1, 10,000] 之間
解題思路:
s1的排列有很多種,只需要找到s2中的一個字符串片段,且該片段滿足每個字母的數(shù)量與s1對應(yīng)字母的數(shù)量相等的條件。
統(tǒng)計字符串片段和s1中字母的數(shù)量,判斷字符串片段和s1中對應(yīng)的字母數(shù)量是否相等。
遍歷字符串s2,不斷以s1的長度來截取字符串片段,然后做 思路2 中的判斷。
Python代碼:
class Solution: def checkInclusion(self, s1: str, s2: str) -> bool: index = 0 s1_dict = collections.Counter(s1) while index <= (len(s2) - len(s1)):????????????#?截取長度為len(s1)的字符串片段 s_dict = collections.Counter(s2[index:(index + len(s1))]) for char, num in s1_dict.items(): if s_dict.get(char) != num: break else: return True index += 1 return False--END--
創(chuàng)作挑戰(zhàn)賽新人創(chuàng)作獎勵來咯,堅持創(chuàng)作打卡瓜分現(xiàn)金大獎總結(jié)
以上是生活随笔為你收集整理的char截取字符串_字符串的排列(滑动窗口)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 小红书宣布完成华为鸿蒙原生应用 Beta
- 下一篇: AMD 8040 系列移动 APU 型号