字符串的重新排列
一、题目描述
二、套入模板
class Solution {
public boolean checkInclusion(String s1, String s2) {
HashMap need=new HashMap<>();
HashMap window=new HashMap<>();
for(char ch:s1.toCharArray()){
need.put(ch,need.getOrDefault(ch,0)+1);
}
char chs[]=s2.toCharArray();
int left=0;
int right=0;
int valid=0;
while(right=s1.length()){
if(valid==need.size())
return true;
char d=chs[left];
left++;
if(need.containsKey(d)){
if(need.get(d).equals(window.get(d))){
valid--;
}
window.put(d,window.get(d)-1);
}
}
}
return false;
}
}
- 解题思路
1、本题移动 left 缩⼩窗⼝的时机是窗⼝⼤⼩⼤于 t.size() 时,应为排列嘛,显然⻓度应该是⼀样的。
2、当发现 valid == need.size() 时,就说明窗⼝中就是⼀个合法的排列,所以⽴即返回 true。