方法一解题思路:
1.首先考虑在s2中直接寻找s1,但考虑到排列问题,不可取
2.考虑到每个小写字母的ASCII码值不同,总和也不同,得出解法一:
原因:存在中位数对差值补齐
解决方法:在返回true前判断两个字符串中是否存在不一样的值
修改代码:
原因:没有考虑到后续的数据排查
解决方法:修改返回true的时机和条件
修改代码:
问题:
1.时间复杂度和空间复杂度过高
2.ASCII码值相加存在中位数相等的情况
方法二解题思路:
1.从小写字母的ASCII码值来看,97开始,我们可以看为从0开始,然后每一个字符都减去'a'
2.创建两个vector,大小为26
方法依然可以优化;
第二题:
思路:跟上题一样使用滑动窗口
问题:数据溢出
解决思路:当字符串s长度小于p时,自然不存在符合的变位词!
添加上述代码后:
如何进一步优化呢:
编译器遍历次数减少,但效果不是很明显