哈尔滨高端品牌网站建设,外包app公司,肇庆网站建设方案咨询,徐州专门做网站438. 找到字符串中所有字母异位词
问题#xff1a;
给定两个字符串 s 和 p#xff0c;找到 s 中所有 p 的 异位词 的子串#xff0c;返回这些子串的起始索引。不考虑答案输出的顺序。
异位词 指由相同字母重排列形成的字符串#xff08;包括相同的字符串#xff09;。 …438. 找到字符串中所有字母异位词
问题
给定两个字符串 s 和 p找到 s 中所有 p 的 异位词 的子串返回这些子串的起始索引。不考虑答案输出的顺序。
异位词 指由相同字母重排列形成的字符串包括相同的字符串。
示例 1:输入: s cbaebabacd, p abc
输出: [0,6]
解释:
起始索引等于 0 的子串是 cba, 它是 abc 的异位词。
起始索引等于 6 的子串是 bac, 它是 abc 的异位词。示例 2:输入: s abab, p ab
输出: [0,1,2]
解释:
起始索引等于 0 的子串是 ab, 它是 ab 的异位词。
起始索引等于 1 的子串是 ba, 它是 ab 的异位词。
起始索引等于 2 的子串是 ab, 它是 ab 的异位词。提示:1 s.length, p.length 3 * 104
s 和 p 仅包含小写字母解决
直接count字符计数然后直接比对
class Solution:def findAnagrams(self, s: str, p: str) - List[int]:n,m,reslen(s),len(p),[]if nm:return resp_cnt[0]*26s_cnt[0]*26for i in range(m):p_cnt[ord(p[i])-ord(a)]1s_cnt[ord(s[i])-ord(a)]1if s_cntp_cnt:res.append(0)for i in range(m,n):s_cnt[ord(s[i-m])-ord(a)]-1 ##每次从count中去掉旧字母s_cnt[ord(s[i])-ord(a)]1 ##每次给count中增加新字母if s_cntp_cnt: res.append(i-m1) ## 记得i-m1return res