Find All Anagrams in a String
题意
给一个字符串s和一个非空串p,求p在s中的所有同字母异序词的下标。比如’abc’和’cba’就是所谓的同字母异序词
解法
这道题目用哈希的思路来解决,外加一个移动窗口,窗口大小为len(p),每次窗口的内容超过了len(p),就把最左边的那个字母(刚移出去的)从hash表中移除,注意!在移除某个字符x的时候,我们先mp[x] -= 1,那么此时要判断mp[x]是否为0,为0的话要del mp[x],因为判断两个hash表是否相同时其实是判断它们的key和value是不是一一对应,而如果mp[x]为0了,x却还是mp的一个key,而事实上这个x已经不能算是mp的key了,所以要删除该key以及对应的value。
代码
|
|