日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 人文社科 > 生活经验 >内容正文

生活经验

leetcode 567. Permutation in String 字符串的排列 滑动窗口法

發布時間:2023/11/28 生活经验 28 豆豆
生活随笔 收集整理的這篇文章主要介紹了 leetcode 567. Permutation in String 字符串的排列 滑动窗口法 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

題目

給定兩個字符串 s1 和 s2,寫一個函數來判斷 s2 是否包含 s1 的排列。換句話說,第一個字符串的排列之一是第二個字符串的子串。
示例1:輸入: s1 = "ab" s2 = "eidbaooo"
輸出: True
解釋: s2 包含 s1 的排列之一 ("ba").示例2:輸入: s1= "ab" s2 = "eidboaoo"
輸出: False輸入的字符串只包含小寫字母
兩個字符串的長度都在 [1, 10,000] 之間

1暴力解法(超時)

class Solution:"""暴力解法"""def perm(self, s=''):if len(s) <= 1:return [s]sl = []for i in range(len(s)):for j in self.perm(s[0:i] + s[i + 1:]):sl.append(s[i] + j)return sldef checkInclusion(self, s1, s2):""":type s1: str:type s2: str:rtype: bool"""if len(s1) > len(s2):return Falses1_perm = list(set(self.perm(s1)))for i in s1_perm:index = s2.find(i)if index != -1:return Truereturn False

使用字典的方式(超時),用java可以過

from collections import defaultdict
import operator
class Solution1:"""使用hashmap的方式"""def checkInclusion(self, s1, s2):""":type s1: str:type s2: str:rtype: bool"""if len(s1) > len(s2):return Falsemap_dict1 = defaultdict(int);map_dict2 = defaultdict(int);for i in s1:map_dict1[i] += 1for i in range(len(s2) - len(s1) + 1):for j in range(len(s1)):map_dict2[s2[i + j]] += 1if operator.eq(map_dict1, map_dict2):return Truemap_dict2.clear()return False

使用list計數的方式(超時)

class Solution2:"""使用list計數的方法"""def match(self, s1, s2):for i in range(26):if s1[i] != s2[i]:return Falsereturn Truedef checkInclusion(self, s1, s2):""":type s1: str:type s2: str:rtype: bool"""if len(s1) > len(s2):return Falselist1 = [0 for i in range(26)]for i in s1:list1[ord(i) - ord('a')] += 1for i in range(len(s2) - len(s1) + 1):list2 = [0 for i in range(26)]for j in range(len(s1)):list2[ord(s2[i + j]) - ord('a')] += 1if self.match(list1, list2):return Truereturn False

使用滑動窗口法

class Solution3:"""滑動窗口法,時間復雜度O(l1+26?(l2?l1),l1是s1的長度,l2是s2的長度"""def match(self, s1, s2):for i in range(26):if s1[i] != s2[i]:return Falsereturn Truedef checkInclusion(self, s1, s2):""":type s1: str:type s2: str:rtype: bool"""if len(s1) > len(s2):return Falselist1 = [0 for i in range(26)]list2 = [0 for i in range(26)]for i in range(len(s1)):list1[ord(s1[i]) - ord('a')] += 1list2[ord(s2[i]) - ord('a')] += 1for i in range(len(s2) - len(s1)):if self.match(list1, list2):return Truelist2[ord(s2[i + len(s1)]) - ord('a')] += 1list2[ord(s2[i]) - ord('a')] -= 1return self.match(list1, list2)

滑動窗口法進階

class Solution4:"""進階的滑動窗口法,使用count來表示26個字符頻率在s1,s2中相同個數"""def checkInclusion(self, s1, s2):""":type s1: str:type s2: str:rtype: bool"""if len(s1) > len(s2):return Falselist1 = [0 for i in range(26)]list2 = [0 for i in range(26)]for i in range(len(s1)):list1[ord(s1[i]) - ord('a')] += 1list2[ord(s2[i]) - ord('a')] += 1count = 0for i in range(26):if list1[i] == list2[i]:count += 1for i in range(len(s2) - len(s1)):r = ord(s2[i + len(s1)]) - ord('a')l = ord(s2[i]) - ord('a')if count == 26:return Truelist2[r] += 1if list2[r] == list1[r]:count += 1elif list2[r] == list1[r] + 1:count -= 1list2[l] -= 1if list2[l] == list1[l]:count += 1elif list2[l] == list1[l] - 1:count -= 1return count == 26

源碼在這

后記

更多滑動窗口法的介紹,見:
滑動窗口法詳解

總結

以上是生活随笔為你收集整理的leetcode 567. Permutation in String 字符串的排列 滑动窗口法的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 国产区精品在线 | 老头老太做爰xxx视频 | 欧美午夜精品理论片 | 91精品综合久久 | 亚洲精品乱码久久久久久写真 | 777中文字幕 | 成人av一区 | 欧洲成人在线视频 | 亚洲成av人片一区二区梦乃 | av集中营 | 欧美天堂 | 免费看黄的网址 | 亚洲欧美日本一区二区 | 亚洲一区二区图片 | 网站黄在线 | 亲女禁h啪啪宫交 | 色窝窝无码一区二区三区成人网站 | 欧美大片在线观看 | 国产视频97 | 国产伦精品一区二区三区照片 | av男女 | 狠狠网站 | 精品人妻无码一区二区三区蜜桃一 | 翔田千里一区二区三区av | 222aaa| 97无码精品人妻 | 综合婷婷 | 国产日韩亚洲欧美 | 日本精品久久久 | 精品人妻无码在线 | 亚洲av无码一区二区乱子仑 | 久久人妻少妇嫩草av无码专区 | 98在线视频| 白丝久久 | 亚洲午夜无码久久久久 | 国产又粗又猛又爽又黄的视频在线观看动漫 | 国产综合精品在线 | 亚洲天堂一区二区三区 | 亚洲AV永久无码国产精品国产 | 另类天堂av | 精品国产乱码久久久久久婷婷 | 中文字幕在线第一页 | 成人午夜视频在线 | 亚洲乱码av | 狠狠久久综合 | 精品中文字幕在线观看 | 五月激情四射网 | 三级免费 | 亚洲欧美另类视频 | 日韩午夜网站 | 九九热播视频 | 欧洲精品一区 | 精品一区二区三区电影 | 久久深夜视频 | 国产精品精品国产 | 亚洲精品在线免费观看视频 | av手机| 亚洲精品视频一二三区 | 五月综合色婷婷 | 捆绑japanhdxxxxvideos | 色呦| 久久久久高清 | 色综合色综合色综合 | 天天干天天操天天玩 | 国产高清自拍av | 日韩欧美亚洲一区 | 九色自拍视频 | 久久久久久久美女 | 色婷婷av一区二区 | 韩国美女被c | 国产剧情av在线 | 三男一女吃奶添下面 | 亚洲免费在线视频观看 | 国产美女永久免费无遮挡 | 欧美视频在线免费看 | 日韩电影一区 | 成人久草 | 青青草香蕉 | 国内精品国产三级国产aⅴ久 | 一本之道高清无码视频 | 亚洲黄色在线看 | 自拍超碰在线 | 亚洲日本国产 | 欧美一区高清 | 在线视频欧美日韩 | 精品国产乱码久久久久久婷婷 | 蕾丝视频污| 久久国产精品免费看 | 午夜视频一区二区三区 | av免费网址在线观看 | 中文在线8资源库 | 哺乳援交吃奶在线播放 | 欧美视频精品在线 | 欧美成人hd | 成人福利网址 | 男人天堂综合网 | 99久久久久久久 | 91精品一区二区三区四区 | 国产视频不卡 |