题目链接
题目描述
解题思路
方法一:滑动窗口
该题的核心思想就在于需要理解一个点:对于两个字符串s1 和 s2,互为排列串的充要条件就是:两个字符串里面包含的所有字符对应的出现次数完全相同;
实现代码如下:
class Solution {public boolean checkInclusion(String s1, String s2) {int n = s1.length(), m = s2.length();if (n > m) {return false;}int[] cnt1 = new int[26];int[] cnt2 = new int[26];for (int i = 0; i < n; ++i) {++cnt1[s1.charAt(i) - 'a'];++cnt2[s2.charAt(i) - 'a'];}if (Arrays.equals(cnt1, cnt2)) {return true;}for (int i = n; i < m; ++i) {++cnt2[s2.charAt(i) - 'a'];--cnt2[s2.charAt(i - n) - 'a'];if (Arrays.equals(cnt1, cnt2)) {return true;}}return false;}}
