给你两个字符串 s1 和 s2 ,写一个函数来判断 s2 是否包含 s1 的排列。如果是,返回 true ;否则,返回 false 。 换句话说,s1 的排列之一是 s2 的 子串 。 来源:力扣

陶陶ᝰꫛꫀꪝ 2021-12-07 14:45:58

1.首先发现大错

没看懂题目,直接就上了。

 但我给想成那啥一定要按顺序排列了,然后。。。。

2.修改问题

比如字符串1"abc",那么字符串2中包含有abc随机组成的字串都是可以的比如,abc,acb,bac,bca,cab,cba这些都是可以算作组成。只要字符串2中包含有这6中组成中的一种即可返回true

源代码如下

bool checkInclusion(char* s1, char* s2) 
{
   int n = strlen(s1), m = strlen(s2);//n,m分别对应1,2的长度
   if (n > m) 
   {//如果字符串1大于字符串2的长度直接返回false
       return false;
   }
   int cnt[26];//建立小写字母数组
   memset(cnt, 0, sizeof(cnt));//为每个字母对应的数组空位置0
   for (int i = 0; i < n; ++i)
   {
       --cnt[s1[i] - 'a'];//将字符串1内的字符进行统计(按负数统计)
   }
   int left = 0;
   for (int right = 0; right < m; ++right)
    {
       int x = s2[right] - 'a';//获取right对应字母在cnt中的位置
       ++cnt[x];//计数加一
       while (cnt[x] > 0)
        {            //当所计数的字母数在字符串2内的数目大于字符串1内的数目
           --cnt[s2[left] - 'a'];      //left对应字母在cnt中计数减1
           ++left;                     //left右移
       }
       if (right - left + 1 == n)
       {    //若左右指针间长度等于s1的长度
           return true;                //返回true
       }
   }
   return false;

 

...全文
1459 回复 打赏 收藏 转发到动态 举报
写回复
用AI写文章
回复
切换为时间正序
请发表友善的回复…
发表回复
字卡v4.3.4 原版 三种UI+关键字卡控制+支持获取用户信息+支持强制关注 集卡模块从一开始的版本到助力版本再到现在的新规则版本。 集卡模块难度主要在于 如何控制各种不同的字卡组合 被粉丝集齐的数量。 如果不控制那么一定会出现超过数量的粉丝集到指定的字卡组合,造成奖品不够的混乱,如果大奖价值高的话,超过数量的粉丝集到大奖后,就造成商家的活动费用超支了。我们冥思苦想如何才能限制集到指定字卡组合的粉丝数,后我们想到了和支付宝一样的选一张关键字卡来进行规则设置的方式来进行限制,根据奖品所需的关键字卡数,设定规则就可以控制每种奖品所需字卡组合被粉丝集到的数量,规则可以在活动进行中根据需要进行修改,活动规则灵活度高。新版的集卡规则,在此次政府发布号的活动中经受了考验,集到指定字卡组合的粉丝没有超出规则限制。有了这个规则限制后,您无需盯着活动,建好活动后就无人值守让活动进行就行了,您只需要时不时来看下蹭蹭上涨的活动数据即可。 被封? 无需担心,模块内置有防封功能,支持隐藏主域名,显示炮灰域名,保护活动安全进行。 活动准备? 只需要您有一个认证服务号即可,支持订阅号借用认证服务号来做活动。如果您

30,403

社区成员

发帖
与我相关
我的任务
社区描述
打造最热爱学习的高校社区,帮助大家提升计算机领域知识,带大家打比赛拿奖,提高自我,希望大家共同创造良好的社区氛围。
社区管理员
  • 川川菜鸟
  • 亡心灵
  • 星辰菜鸟
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

监督大家学习,每日学习打卡,以投稿形式打卡。扫码关注公众号,可加入粉丝群和领取大量资源。

试试用AI创作助手写篇文章吧