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

湛江cms建站系统烟台市芝罘区住房和建设局网站

湛江cms建站系统,烟台市芝罘区住房和建设局网站,wap娃派手机信息网,wordpress 花瓣模板继续学!嗨起来!!!(正确率已经下30%了,我在干什么) 题目: 438. 找到字符串中所有字母异位词 给定两个字符串 s 和 p,找到 s 中所有 p 的子串,返回这些子串的…

继续学!嗨起来!!!(正确率已经下30%了,我在干什么)

题目:

438. 找到字符串中所有字母异位词

给定两个字符串 s 和 p,找到 s 中所有 p 的子串,返回这些子串的起始索引。不考虑答案输出的顺序。

示例 1:

输入: s = "cbaebabacd", p = "abc"
输出: [0,6]
解释:
起始索引等于 0 的子串是 "cba", 它是 "abc" 的异位词。
起始索引等于 6 的子串是 "bac", 它是 "abc" 的异位词。

注意:

  1. 是异位词
  2. 要求时间短
  3. 滑动窗口解法(类似双指针)

不熟悉的操作:

[0]*26 = np.zeros([1,26])

ord() 是 Python 的内置函数,用于获取字符的 ASCII 码值

标准解法:

1.将p的字母和数量储存起来,滑动窗口

不用每次排序

不是用字典储存,而是一个列表,从a到z存字母个数【天才想法!】

一些思考:如果用字典呢?不过字典还要搜索,但如果不在就可以跳过(跟为负跳过是一样的捏)

里面的数据不用遍历:移过则出,没过则进

class Solution:def findAnagrams(self, s: str, p: str) -> List[int]:s_len, p_len = len(s), len(p)if s_len < p_len:return []ans = []s_count = [0] * 26p_count = [0] * 26for i in range(p_len):s_count[ord(s[i]) - 97] += 1p_count[ord(p[i]) - 97] += 1if s_count == p_count:ans.append(0)for i in range(s_len - p_len):s_count[ord(s[i]) - 97] -= 1s_count[ord(s[i + p_len]) - 97] += 1if s_count == p_count:ans.append(i + 1)return ans作者:力扣官方题解
链接:https://leetcode.cn/problems/find-all-anagrams-in-a-string/solutions/1123971/zhao-dao-zi-fu-chuan-zhong-suo-you-zi-mu-xzin/
来源:力扣(LeetCode)
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

2.减小储存空间,出相同-1,进相同+1,differ记录不同的个数

部分代码:

# 列表推导式的结果:生成一个布尔值列表,表示每个元素是否是非零值。
count = [1, 0, 2, 0, 3]
bool_list = [c != 0 for c in count]
print(bool_list)  # 输出:[True, False, True, False, True]# .count(True):计算布尔值列表中 True 的数量,即非零元素的数量。
differ = bool_list.count(True)
print(differ)  # 输出:3

全部代码:

class Solution:def findAnagrams(self, s: str, p: str) -> List[int]:s_len, p_len = len(s), len(p)if s_len < p_len:return []ans = []count = [0] * 26for i in range(p_len):count[ord(s[i]) - 97] += 1count[ord(p[i]) - 97] -= 1differ = [c != 0 for c in count].count(True)if differ == 0:ans.append(0)for i in range(s_len - p_len):if count[ord(s[i]) - 97] == 1:  # 窗口中字母 s[i] 的数量与字符串 p 中的数量从不同变得相同differ -= 1elif count[ord(s[i]) - 97] == 0:  # 窗口中字母 s[i] 的数量与字符串 p 中的数量从相同变得不同differ += 1count[ord(s[i]) - 97] -= 1if count[ord(s[i + p_len]) - 97] == -1:  # 窗口中字母 s[i+p_len] 的数量与字符串 p 中的数量从不同变得相同differ -= 1elif count[ord(s[i + p_len]) - 97] == 0:  # 窗口中字母 s[i+p_len] 的数量与字符串 p 中的数量从相同变得不同differ += 1count[ord(s[i + p_len]) - 97] += 1if differ == 0:ans.append(i + 1)return ans作者:力扣官方题解
链接:https://leetcode.cn/problems/find-all-anagrams-in-a-string/solutions/1123971/zhao-dao-zi-fu-chuan-zhong-suo-you-zi-mu-xzin/
来源:力扣(LeetCode)
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

 自己的做法:

O(N2Logn),因为排序,时间比较长

又是用双指针做的,感觉和滑动窗口异曲同工(不过双指针中间长度不固定,滑动窗口固定罢了)

感觉我丢return 【】的这部分丢的比它做法1多

写代码的时候出现的问题:for循环的数量和缩进

class Solution(object):def findAnagrams(self, s, p):""":type s: str:type p: str:rtype: List[int]"""# 想法1:把所有p的排列组合列出来,进行搜索# 想法2:把所有有字母的对应长度截取下来排序,看看和p是否不同# 想法2的拓展:把每个字母都在p(集合)内的同等长度序列截下来,再判断# 先丢一部分s_set = set(s)p_set = set(p)for x in p_set:if x not in s_set:return []# 双指针a = 0b = len(p)p_sort = sorted(p)l = []while b <= len(s):if s[a] in p_set:for x in s[a+1:b]:    # 错1if x not in p_set:breakif x == s[b-1]:    # 错2l1 = sorted(s[a:b])if l1 == p_sort:l.append(a)a += 1b += 1return l

1. 时间复杂度更高(减了一个判断),但更好懂的代码

class Solution(object):def findAnagrams(self, s, p):""":type s: str:type p: str:rtype: List[int]"""# 想法1:把所有p的排列组合列出来,进行搜索# 想法2:把所有有字母的对应长度截取下来排序,看看和p是否不同# 想法2的拓展:把每个字母都在p(集合)内的同等长度序列截下来,再判断# 先丢一部分s_set = set(s)p_set = set(p)for x in p_set:if x not in s_set:return []# 双指针a = 0b = len(p)p_sort = sorted(p)l = []while b <= len(s):if s[a] in p_set:l1 = sorted(s[a:b])if l1 == p_sort:l.append(a)a += 1b += 1return l


文章转载自:

http://juQvVPIE.nyqnk.cn
http://fvnjYFR3.nyqnk.cn
http://anaLUSOh.nyqnk.cn
http://kKd8dpJd.nyqnk.cn
http://e62OKkkM.nyqnk.cn
http://9xDEgjku.nyqnk.cn
http://7MBX8Xi9.nyqnk.cn
http://wct7aur4.nyqnk.cn
http://TynctMPm.nyqnk.cn
http://HBKKuzrM.nyqnk.cn
http://qWE43W7j.nyqnk.cn
http://GzG0cZSe.nyqnk.cn
http://5ijwJHBu.nyqnk.cn
http://W3twOQdQ.nyqnk.cn
http://Gybq2888.nyqnk.cn
http://d4ORpOpo.nyqnk.cn
http://LLhS2QKY.nyqnk.cn
http://M99eHHG2.nyqnk.cn
http://9FqPGE4N.nyqnk.cn
http://cSWUj1kE.nyqnk.cn
http://Gt4X4kTI.nyqnk.cn
http://lHG8DTpH.nyqnk.cn
http://r0yf1wj2.nyqnk.cn
http://BvdheKcx.nyqnk.cn
http://Olk5XHfy.nyqnk.cn
http://TRZJUAog.nyqnk.cn
http://B7ifsXf4.nyqnk.cn
http://wp9JbC6O.nyqnk.cn
http://w1xGUef5.nyqnk.cn
http://RPSPRTq9.nyqnk.cn
http://www.dtcms.com/wzjs/726840.html

相关文章:

  • 做系统用什么网站好班级建设网站
  • 没有网站能做淘宝客吗wordpress 判断自定义栏目
  • 用layui做的网站网络建设的网站
  • 兰州网站建设博客微信公众号申请注册官网
  • 服务器做网站好公司的网站建设费用算什么费用
  • 网站建设需求怎么写wordpress游戏门户
  • 响水哪家专业做网站在线设计公司logo
  • 短网址生成网站湖南微信网站营销
  • 为什么要做一个营销型网站品牌策划咨询设计公司
  • 网站建设与制作实现精准营销简单的ps网页设计教程
  • 企业网站模板包含什么wordpress兼职
  • 免费的建站软件推荐下载中国制造货源网一件代发
  • 网站建设开场白宣传片拍摄报价明细
  • 做视频特效的网站网站查询备案
  • iis建设网站服务好质量好的app开发
  • 建立网站的wordpress自定义文章类型面包屑
  • 电商网站开发计划书互联网招商
  • 互联网创业项目网站许昌网络推广哪家好
  • 网站后台购买天元建设集团有限公司基本情况
  • 手机网站怎么做优化做任务领q币网站
  • 做策划 都上什么网站wordpress 食品
  • 搭建网站复杂吗广州专业网站建设
  • 网站建设资源分享兰州网站seo费用
  • 做企业网站的哪家好响应式布局网页
  • 安吉做网站网站优化营销公司
  • 自己做网站现实么html网站搭建
  • 企业网站制作免费下载域名交易网站哪个好
  • 企业网站展示论文网站如何做seo推广方案
  • 上海互联网做网站公众号制作流程
  • cnnic可信网站必须做吗?做情人节网站