java leetcode之[动态规划 中等]567. 字符串的排列

java leetcode之[动态规划 中等]567. 字符串的排列,第1张

java leetcode之[动态规划 中等]567. 字符串的排列

题目的链接在这里: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);
        


    }
}

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/5573772.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-14
下一篇 2022-12-15

发表评论

登录后才能评论

评论列表(0条)

保存