题目的链接在这里: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); } }
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)