Java实现 LeetCode 567 字符串的排列(滑动窗口,处理区间内的字符数量)
2024-10-03 01:31:49
567. 字符串的排列
给定两个字符串 s1 和 s2,写一个函数来判断 s2 是否包含 s1 的排列。
换句话说,第一个字符串的排列之一是第二个字符串的子串。
示例1:
输入: s1 = “ab” s2 = “eidbaooo”
输出: True
解释: s2 包含 s1 的排列之一 (“ba”).
示例2:
输入: s1= “ab” s2 = “eidboaoo”
输出: False
注意:
输入的字符串只包含小写字母
两个字符串的长度都在 [1, 10,000] 之间
class Solution {
public boolean checkInclusion(String s1, String s2) {
if(s2.length()<s1.length())return false;
int[] book=new int[26];
for (int i=0;i<s1.length();i++)
{
book[s1.charAt(i)-'a']++;
}
int[] book1=new int[26];
for (int i=0;i<s1.length();i++)
{
book1[s2.charAt(i)-'a']++;
}
if(check(book,book1))return true;
int left=0,right=s1.length();
while (right<s2.length())
{
book1[s2.charAt(left++)-'a']--;
book1[s2.charAt(right++)-'a']++;
if(check(book,book1))return true;
}
return false;
}
private boolean check(int[] book, int[] book1) {
for (int i=0;i<26;i++)
{
if(book[i]!=book1[i])return false;
}
return true;
}
}
最新文章
- zabbix自定义key
- 巩固一下:SpringMVC详细示例实战教程
- Android View坐标Left, Right, Top, Bottom
- SAE java应用读写文件(TmpFS和Storage)-----绝世好代码
- Android 与 IIS服务器身份验证
- Linux计划任务入门详解
- jQuery formValidator表单验证插件常见问题
- POJ 1122 FDNY to the Rescue! Floyd 打印路径就行了
- UML相关工具一览
- (一)spring MVC基本概念和流程
- AngularJS 模板
- C#隐式转换与显示转换
- python识别图片
- loadrunner参数化使用mysql数据源失败解决方法
- ASCII码字符串普通加密解密-android
- Linux vim文档操作
- webgl优化
- saltstack配置管理之states
- find_first_zero_bit在使用gcc 4.2.4 编译时,需要保护%eax
- 设置webstorm支持ES6语法