题目的链接在这里:https://leetcode-cn.com/problems/permutation-in-string/
- 题目大意
- 一、示意图
- 二、解题思路
- 滑动窗口
题目大意
给你两个字符串 s1 和 s2 ,写一个函数来判断 s2 是否包含 s1 的排列。如果是,返回 true ;否则,返回 false 。
换句话说,s1 的排列之一是 s2 的 子串 。
一、示意图 二、解题思路
滑动窗口滑动窗口
代码如下:
class Solution {
public boolean checkInclusion(String s1, String s2) {
//s2是否包含s1的排列 也就是s2是否包含s1 但是s1可以随意排列 使用滑动数组
//但是s1的排列存在很多
//应该是这个 把数组的窗口设置为s1的长度 用一个比较暴力的手段
int lenS1=s1.length();
int left=0;
int right=left+lenS1-1;
while (right<=s2.length()-1){
//每次都截取同一段 substring好像是 左闭右开
String temp=s2.substring(left,right+1);
//然后判断这两个是否一致
if(isSame(temp,s1)){
return true;
}
else{
//向前一步
left++;
right++;
}
}
return false;
}
private boolean isSame(String temp, String s1) {
//直接进行排序
char[] chars = temp.toCharArray();
char[] chars1 = s1.toCharArray();
Arrays.sort(chars);
Arrays.sort(chars1);
temp=new String(chars);
s1=new String(chars1);
return temp.equals(s1);
}
}


![java leetcode之[动态规划 中等]567. 字符串的排列 java leetcode之[动态规划 中等]567. 字符串的排列](http://www.mshxw.com/aiimages/31/582560.png)
