给定两个字符串 s1 和 s2,写一个函数来判断 s2 是否包含 s1 的排列。

换句话说,第一个字符串的排列之一是第二个字符串的子串。

示例1:

输入: s1 = "ab" s2 = "eidbaooo"
输出: True
解释: s2 包含 s1 的排列之一 ("ba").

示例2:

输入: s1= "ab" s2 = "eidboaoo"
输出: False
解法:开始想跑dfs 跑全排列,然后用KMP 去匹配,但是后来想了一下,不用那么复杂,因为全是小写字母,所以只需要s2 和s1 这段字符串的字符数量一样就可以了,
因为s1 的子串可以重新组合,必然能和s2 匹配成功。
class Solution {
public:
bool check(int a[])
{
for(int i=;i<;i++)
{
if(a[i]!=)
return false;
}
return true;
}
bool checkInclusion(string s1, string s2) {
int len1=s1.length();int len2=s2.length();
if(len1>len2 || len1== || len2==)
{
return false;
}
else
{
int a[]={};
for(int i=;i<len1;i++)
{
a[s1[i]-'a']--;
a[s2[i]-'a']++;
}
for(int j=len1;j<len2;j++)
{
if(check(a))
{
return true;
}
a[s2[j-len1]-'a']--;
a[s2[j]-'a']++;
}
return check(a);
}
}
};

最新文章

  1. Beta--项目冲刺第七天
  2. Increasing Triplet Subsequence
  3. sublime快捷键-for mac
  4. NSCoding归档
  5. 黄聪:如何阻止iframe里引用的网页自动跳转
  6. 解析$.grep()源码及透过$.grep()看(两次取反)!!的作用
  7. windows github 搭建与使用
  8. sizeof(int *) 和 sizeof(int)型的大小问题
  9. PHP中字符串类型与数值类型混合计算
  10. aspnet-webapi-2-contrib
  11. mybatis逆向工程生成代码
  12. 数据恢复培训资料:BMP文件详解
  13. OkHttp框架从入门到放弃,解析图片使用Picasso裁剪,二次封装OkHttpUtils,Post提交表单数据
  14. 18.22 sprintf函数功能
  15. Spring Boot入门(12)实现页面访问量统计功能
  16. java_21 Set接口、HashSet类、LinkedSet类
  17. 为docker配置HTTP代理服务器
  18. maven(二):创建一个可用的maven项目,完整过程
  19. [cnblog新闻]历史性时刻:云硬件支出首次高于传统硬件
  20. 【AtCoder】ARC083

热门文章

  1. [Xcode 实际操作]九、实用进阶-(32)项目的打包上传和提交审核以及下架处理
  2. dubbo-admin安装
  3. MyBatis逆向工程代码的生成以及使用详解(持续更新)
  4. excel输入值非法,限定了可以输入的数值怎么办
  5. [题解](树的计数)luogu_P4430猴子打架_/_luogu_P4981父子
  6. python 基础(三) 程序基本流程
  7. bzoj1538 [NWERC2017]High Score
  8. 一些API
  9. JavaMailSender怎么发送163和qq邮件
  10. 分享一套Code Smith 搭建N层架构模板