字符串的排序
此博客链接:https://www.cnblogs.com/ping2yingshi/p/14394806.html
字符串的排序
题目
给定两个字符串 s1 和 s2,写一个函数来判断 s2 是否包含 s1 的排列。
换句话说,第一个字符串的排列之一是第二个字符串的子串。
示例1:
输入: s1 = "ab" s2 = "eidbaooo"
输出: True
解释: s2 包含 s1 的排列之一 ("ba").
示例2:
输入: s1= "ab" s2 = "eidboaoo"
输出: False
注意:
输入的字符串只包含小写字母
两个字符串的长度都在 [1, 10,000] 之间
题解
利用所谓的滑动窗口解题,利用数组存放s1的字符串和对应字符的个数,判断s2中是否存在s1中相同的字符。因为s1中的字符在s2中要求是相邻的,所以以s1字符串的长度在s2中找相应长度的字符串,判断是否一致,从s2的左侧开始比较,是否存在s1长度的字符串是和s1中的字符串是相等的。
代码
class Solution { public boolean checkInclusion(String s1, String s2) { int m = s1.length(), n = s2.length(); if (m > n) return false; int str[]=new int[26]; int str1[]=new int[26]; for(int i=0;i<m;i++) { str[s1.charAt(i)-'a']++; } for(int i=0;i<=n-m;i++){ for(int j=i;j<i+m;j++){ str1[s2.charAt(j)-'a']++; } if(Arrays.equals(str,str1)) return true; Arrays.fill(str1,0); } return false; } }
结果
出来混总是要还的