当前位置: 首页 > news >正文

镇江网站公司百度搜索页

镇江网站公司,百度搜索页,随机图片网站,可以做3d电影网站有哪些1、通过对滑动窗口前两个题型的总结#xff0c;我们几乎已经习惯在给定的一个序列里使用滑动窗口的模板解题了#xff0c;本次对应的“三、两个序列窗口定长类型”#xff0c;也是考察连续子数组、连续子串问题#xff0c;只不过这次会给定两个序列#xff0c;判断短序列在… 1、通过对滑动窗口前两个题型的总结我们几乎已经习惯在给定的一个序列里使用滑动窗口的模板解题了本次对应的“三、两个序列窗口定长类型”也是考察连续子数组、连续子串问题只不过这次会给定两个序列判断短序列在长序列中是否存在字母异位词或排列 2、对于这类题目通常需要先把短子串转为待匹配的哈希表再定义一个matchKeys标记计数滑动窗口内的元素与待匹配的哈希表的键的刚好匹配或过匹配的数量刚好匹配指的是滑窗内该元素在待匹配的哈希表中存在且数量相等过匹配指的是滑窗内该元素在待匹配的哈希表中存在且数量更多二者结合就是覆盖的意思 3、因此这类题目对应的解法就是滑动窗口哈希表matchKeys标记(刚好匹配或过匹配的键数量)同时这类题目直截了当的给出了两个指针如何更新右指针遍历长序列左指针在滑窗长度超出短序列 242. 有效的字母异位词 这道题目不是本次的总结题型放在这里主要是为了给出一下字母异位词的含义两个序列长度相等包含的元素种类和数目相同元素位置不一定相同 242. 有效的字母异位词 题目描述给定两个字符串 s 和 t 编写一个函数来判断 t 是否是 s 的字母异位词。 注意若s 和 t中每个字符出现的次数都相同则称s 和 t互为字母异位词。 示例 1:输入: s anagram, t nagaram输出: true 题眼字母异位词 思路简单题直接利用哈希表判断即可 class Solution:def isAnagram(self, s: str, t: str) - bool:# 情况1、两个字符串长度不相等注意提示字符串长度至少为1if len(s) ! len(t):return False# 情况2、两个字符串长度相等hashTable {}# 将s转换为哈希表for ch in s:if ch in hashTable:hashTable[ch] 1else:hashTable[ch] 1# 将t在哈希表中遍历for ch in t:if ch in hashTable:if hashTable[ch] 0: # 不删除key的做法ch字符数量不相等return FalsehashTable[ch] - 1else:return Falsereturn True # 此时两个长度相等的字符串一定是字母异位词if __name__ __main__:obj Solution()while True:try:in_line input().strip().split()s in_line[1].split(,)[0].strip()[1: -1]t in_line[2].strip()[1: -1]print(obj.isAnagram(s, t))except EOFError:break438. 找到字符串中所有字母异位词 1、这道题目要在长序列中找短序列的字母异位词滑动窗口的长度首先要等于短序列的长度定长才能进一步比较 2、字母异位词的比较通常有更便捷的思路一即对两个序列排序后进行是否相等的判断如果题目能够通过那可以直接用这种方法 3、思路二滑动窗口哈希表matchKeys标记(刚好匹配或过匹配的键数量)要准确理解“matchKeys标记(刚好匹配或过匹配的键数量)”为什么这样定义 1在下面的具体代码中可以发现遍历长序列和缩短滑窗时为了提升效率都只对存在于待匹配的哈希表中的元素才进行操作 2同时当滑窗右指针移动增加元素使得需要的字符数量变成负数由刚好匹配变为过匹配时matchKeys不减少当滑窗左指针移动减少元素使得需要的字符数量变成零由过匹配变为刚好匹配时matchKeys不增加 3最后由于滑动窗口长度是恒定的当matchKeys等于短序列长度时 一定满足 刚好匹配 from typing import List438. 找到字符串中所有字母异位词 题目描述给定两个字符串s和 p找到s中所有p的异位词的子串返回这些子串的起始索引。不考虑答案输出的顺序。 异位词 指由相同字母重排列形成的字符串包括相同的字符串。 示例 1:输入: s cbaebabacd, p abc输出: [0,6]解释:起始索引等于 0 的子串是 cba, 它是 abc 的异位词。起始索引等于 6 的子串是 bac, 它是 abc 的异位词。 题眼字母异位词 —— 判断 p 的排列之一是 s 的 子串 思路1直接排序后比较字符串是否相等与”49. 字母异位词分组“一样这道题不建议这种方法 思路2滑动窗口哈希表matchKeys标记(刚好匹配或过匹配的键数量) 注意两个序列的滑动窗口短序列转换为哈希表在窗口滑动过程中更新matchKeys标记滑动窗口的长度固定意味着窗口长度超出时对left更新 class Solution:def findAnagrams(self, s: str, p: str) - List[int]:# 情况1、p字符串长度大于s字符串if len(s) len(p):return []# 情况2、p字符串长度小于等于s字符串# # 思路1的做法# result []# needStr .join(sorted(p))# for i in range(len(s) - len(p) 1): # 注意1细节# if .join(sorted(s[i: i len(p)])) needStr:# result.append(i)# return result# 思路2滑动窗口哈希表matchKeys标记(刚好匹配或过匹配的键数量)# 0、将p转换为哈希表存储了需要匹配的字符种类及数量needHashTable {}for ch in p:if ch not in needHashTable:needHashTable[ch] 1else:needHashTable[ch] 1# 定义滑动窗口操作的必要变量left, right 0, 0matchKeys 0 # 标记与needHashTable刚好匹配或过匹配的键数量即对应的元素数量 等于或大于对应的键值result []while right len(s):# 1、当移动right扩大窗口进行哪些操作if s[right] in needHashTable:needHashTable[s[right]] - 1 # 当需要的字符数量变成负数由刚好匹配变为过匹配时matchKeys不变if needHashTable[s[right]] 0: # 由欠匹配变为刚好匹配matchKeys 1# 2、什么条件下窗口应该暂停扩大开始移动left缩小窗口while right - left 1 len(p):# 3、缩小窗口进行哪些操作if s[left] in needHashTable:needHashTable[s[left]] 1 # 当需要的字符数量变成零由过匹配变为刚好匹配时matchKeys不变if needHashTable[s[left]] 1: # 由刚好匹配变为欠匹配matchKeys - 1left 1# 4、更新结果if matchKeys len(needHashTable): # 因为滑动窗口长度是恒定的此时一定满足 刚好匹配result.append(left)right 1return resultif __name__ __main__:obj Solution()while True:try:in_line input().strip().split()s1 in_line[1]s2 in_line[3]# print(s1, s2)print(obj.findAnagrams(s1, s2))except EOFError:break567. 字符串的排列 这道题目与“438. 找到字符串中所有字母异位词”是一个题意排列与字母异位词是完全相同的意思 567. 字符串的排列 题目描述给你两个字符串s1和s2 写一个函数来判断 s2 是否包含 s1的排列。如果是返回 true 否则返回 false 。 换句话说s1 的排列之一是 s2 的 子串 。 示例 1:输入s1 ab s2 eidbaooo输出true解释s2 包含 s1 的排列之一 (ba). 题眼判断 s1 的排列之一是 s2 的 子串 思路1直接排序后比较字符串是否相等与”49. 字母异位词分组“一样这道题不建议这种方法 思路2滑动窗口哈希表matchKeys标记(刚好匹配或过匹配的键数量) 注意两个序列的滑动窗口短序列转换为哈希表在窗口滑动过程中更新matchKeys标记滑动窗口的长度固定意味着窗口长度超出时对left更新 class Solution:def checkInclusion(self, s1: str, s2: str) - bool:# 跟“438. 找到字符串中所有字母异位词”是一个题意# 情况1、s1长度大于s2if len(s1) len(s2):return False# 情况2、有两种方法# 方法一、直接排序字符串进行比较# sortedS1 .join(sorted(s1))# for i in range(len(s2) - len(s1) 1):# if .join(sorted(s2[i: i len(s1)])) sortedS1:# return True# return False# 方法二、滑动窗口哈希表matchKeys标记(刚好匹配或过匹配的键数量)# 0、将s1转换为哈希表存储了需要匹配的字符种类及数量needHashTable {}for ch in s1:if ch not in needHashTable:needHashTable[ch] 1else:needHashTable[ch] 1# 定义滑动窗口操作的必要变量left, right 0, 0matchKeys 0 # 标记与needHashTable刚好匹配或过匹配的键数量即对应的元素数量 等于或大于对应的键值while right len(s2):# 1、当移动right扩大窗口进行哪些操作if s2[right] in needHashTable:needHashTable[s2[right]] - 1 # 当需要的字符数量变成负数由刚好匹配变为过匹配时matchKeys不变if needHashTable[s2[right]] 0: # 由欠匹配转为刚好匹配matchKeys 1# 2、什么条件下窗口应该暂停扩大开始移动left缩小窗口while right - left 1 len(s1):# 3、缩小窗口进行哪些操作if s2[left] in needHashTable:needHashTable[s2[left]] 1 # 当需要的字符数量变成零由过匹配变为刚好匹配时matchKeys不变if needHashTable[s2[left]] 1: # 由刚好匹配转为欠匹配matchKeys - 1left 1# 4、更新结果if matchKeys len(needHashTable): # 因为滑动窗口长度是恒定的此时一定满足 刚好匹配return Trueright 1return Falseif __name__ __main__:obj Solution()while True:try:in_line input().strip().split()s1 in_line[1]s2 in_line[3]# print(s1, s2)print(obj.checkInclusion(s1, s2))except EOFError:break49. 字母异位词分组 这道题目与本章总结的题型不是一个套路模板的解法但有着字母异位词的字眼与“438. 找到字符串中所有字母异位词”的思路一相同直接将排序后的字符串作为键将字符串数组转换为字典哈希表直接返回list(字典的值) from typing import List49. 字母异位词分组 题目描述给你一个字符串数组请你将 字母异位词 组合在一起。可以按任意顺序返回结果列表。 字母异位词 是由重新排列源单词的字母得到的一个新单词所有源单词中的字母通常恰好只用一次 示例 1:输入: strs [eat, tea, tan, ate, nat, bat]输出: [[bat],[nat,tan],[ate,eat,tea]] 题眼字母异位词 分组 思路直接将排序后的字符串作为键将字符串数组转换为字典哈希表直接返回list(字典的值) class Solution:def groupAnagrams(self, strs: List[str]) - List[List[str]]:hashTable {}for s in strs:key .join(sorted(s))if key not in hashTable:hashTable[key] [s]else:hashTable[key].append(s)return list(hashTable.values())if __name__ __main__:obj Solution()while True:try:in_line input().strip().split()[1].strip()[1: -1]strs []if in_line ! : # 整个输入为空if in_line : # 有一个空字符strs.append()else:for i in in_line.split(,):strs.append(i.strip()[1: -1])print(obj.groupAnagrams(strs))except EOFError:break
http://www.w-s-a.com/news/847648/

相关文章:

  • 做网站媒体专门做产品定制的网站
  • 公司企业网站建设步骤免费asp网站模板
  • 台州企业网站搭建价格做留言的网站
  • 西安网站建设q.479185700強高端网站设计定制公司
  • 网站设计是平面设计吗音频文件放到网站空间里生成链接怎么做
  • seo是对网站进行什么优化可以在哪些网站做翻译兼职
  • 南宁seo网站推广服务网站建设客户分析
  • 网站属于什么公司甜品售卖网站网页设计
  • 如何在宝塔中安装wordpressseo1888网站建设
  • 网站系统cms湖南平台网站建设制作
  • 美团网站怎么做未备案网站加速
  • 通用cms网站wordpress可以商用
  • 阳江网络问政平台 周报济南seo公司案例
  • 重庆聚百思网站开发网络市场调研
  • seo工具共享网站敬请期待的英语
  • 最好看免费观看高清大全中国移动网络优化做什么的
  • 网站开发的步骤医院网站建设细节
  • 阿雷网站建设wordpress lucene
  • seo做多个网站建筑公司企业标语
  • 各大网站收录查询汕尾手机网站设计
  • 东莞网站平台费用58同城推广能免费做网站吗
  • 网站建设的组织机构做博客网站赚钱吗
  • 移动网站建设的前期规划内容南阳网站备案
  • 天津公司网站建设公司哪家好网站建设评估
  • 猪八戒网网站建设wordpress建网 打不开
  • 廊坊网站排名优化报价自学网站建设和seo
  • 摄影网站开发背景vs2012做网站
  • 网站建设空间使用标准沈阳网站建设招标公司
  • 网站流量怎么做的成都山而网站建设公司
  • 天河区网站建设公司爱站网排名