字符串的排列
题目
给定两个字符串 s1 和 s2,写一个函数来判断 s2 是否包含 s1 的排列。
换句话说,第一个字符串的排列之一是第二个字符串的子串。
解题思路
这道题,我们用到的算法是 滑动窗口
首先字符串s1的排列的可能性应该是它的长度的阶乘,因为字符串长度可能为10000,所以找出所有排列情况是不太可能。
我们可以转换思路,不要关注排列的形式,而是关注排列中元素的数量关系
比如
aab
,那么,转换为数量关系就是{a:2,b:1}
,因为 S1 长度为 3,所以我们的窗口长度也为3如果我们在 S2 的找到了这样一个窗口符合出现
a
的次数是两个,b
是一个,那么 S2 就是包含 S1 的排列的
Last updated
Was this helpful?