哪种网站名称容易通过备案审核,营销型网站的建设步骤,鸿星尔克网络营销案例分析,发生太多重定位wordpress题目#xff1a; 给定两s和p中所有p的异位词的子串#xff0c;返回这些子串的起始索引。不考虑答案输出的顺序。异位词指由相同字母重排列形成的字符串#xff08;包括相同的字符串#xff09;。
示例 #xff1a;
输入 输出 解释 s cbaebabacd, p 给定两s和p中所有p的异位词的子串返回这些子串的起始索引。不考虑答案输出的顺序。异位词指由相同字母重排列形成的字符串包括相同的字符串。
示例
输入 输出 解释 s cbaebabacd, p abc [0,6] 起始索引等于 0 的子串是 cba, 它是 abc 的异位词。
起始索引等于 6 的子串是 bac, 它是 abc 的异位词。
提示
1s.lengthp.length3*10^4s和p仅包含小写字母
相关标签哈希、字符串、滑动窗口
题解 根据题目中的提示我们可以先统计出字符串p的个数再for循环遍历统计字符串s的个数。利用滑动窗口来确定比较范围字符串p的长度。如果统计个数相等即是p的异位词。
注意Counter统计个数为0的元素依旧存在如果直接与p的统计个数比较是错误的所以需要判断新元素是否在p里面添加元素值为0。
代码Python
import collectionss cbaebabacd
p abcdef leetcode_fun1():1、滑动窗口一次遍历2、异位词比较计数元素个数n, m, pl, res len(p), len(s), collections.Counter(p), list()if m n:return []pro, pre 0, n - 1while pre m:if pl collections.Counter(s[pro:pre 1]):res.append(pro)pro 1pre 1return resdef leetcode_fun2():1、滑动窗口、一次遍历异位词比较计数元素个数res, n, m list(), len(p), len(s)cnt_p collections.Counter(p)cnt_s collections.Counter()for i in range(m):cnt_s[s[i]] 1if s[i] not in p:cnt_p[s[i]] 0if i n:cnt_s[s[i - n]] - 1if cnt_s cnt_p:res.append(i - n 1)return resif __name__ __main__:res leetcode_fun2()print(res) # [0, 6]总结
题目内容来源于leetcode链接找到字符串中所有字母异位词