- 一、题目描述
- 二、套入模板
- LeetCodeOJ链接: 字符串的重新排序
- 滑动窗口模板介绍:
滑动窗口技巧介绍 - 代码实现
class Solution { public boolean checkInclusion(String s1, String s2) { HashMapneed=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。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)