字符串中的变位词
思路: 用一个数组来记录字母出现的次数,当数组中都为0时,说明有变位词
左右两个指针相距s1的长度,同时向右移动,每次计算是否有变位词。
字符串中所有变位词
思路:同上
不含重复字符的最长子字符串
思路:首先考虑到双指针和哈希表,一前一后,当前指针向前移动一个时判断哈希表该字符是否重复,重复则后指针向前移动知道没有重复,同时记录此时的长度。
以上方法需多次遍历哈希表,为避免多次遍历,可以考虑设一个变量为0,当有重复值时将它设为1,没有时再变回0.
包含所有字符的最短字符串
思路:先把短字符串个数写入map(哈希表),设一个count记录map中字符个数,然后依旧双指针遍历长字符串,一前一后,先前指针移动,每次移动哈希表中存在的字符个数减1,如果该字符此时个数为0,count--,当count为0时,记录此时长度,后指针向前移动,如果此时的字符在map中存在,则把它的个数++,如果此时哈希表中该字符的个数为1,则count++。
有效的回文
思路:双指针i=0,j=s.length-1,向中间遍历,除了数字和字母都忽略掉,然后转换成小写后比较是否相等。
最多删除一个字符得到回文
思路:先双指针向中间遍历,如果遇到不相等的,退出循环,再判断忽略一个字符能否得到回文
回文字符串的个数
思路:首先应考虑到从中间向两端遍历,然后考虑到回文串为偶数和奇数的问题,因此先定中间位置为i和i,或者i和i+1,然后寻找以这为中心的回文串。