连续字符&&有效的字母异味词

举报
芒果_Mango 发表于 2022/11/30 23:58:19 2022/11/30
【摘要】 242.有效的字母异位词https://leetcode.cn/problems/valid-anagram/方法1:对两个字符串排序,然后判断二者是否相同class Solution {public: bool isAnagram(string s, string t) { //方法1:对两个字符串排序,判断二者是否一致 sort(s.begin(),s...

242.有效的字母异位词

https://leetcode.cn/problems/valid-anagram/

image-20220610103156982


方法1:对两个字符串排序,然后判断二者是否相同

class Solution {
public:
    bool isAnagram(string s, string t) {
        //方法1:对两个字符串排序,判断二者是否一致
        sort(s.begin(),s.end());
        sort(t.begin(),t.end());
        return s == t;
    }
};

方法2:统计两个字符串的出现次数,如果全部字符都能抵消为0,说明时字母异位词

class Solution {
public:
    bool isAnagram(string s, string t) {
        //若s和t中每个字符出现的次数都相同,则称s和t互为字母异位词
        //因为只包含小写字母,所以开26个空间映射
        int hash[26] = {0};
        for(auto ch:s)
        {
            hash[ch - 'a']++;
        }
        for(auto ch:t)
        {
            hash[ch -'a']--;
        }
        //遍历哈希数组
        //如果全部位置都为0,说明二者就是异位词,否则不是
        for(int i = 0 ;i<26;i++)
        {
            if(hash[i] != 0)
            {
                return false;
            }
        }
        return true;
    }
};

1446. 连续字符

https://leetcode.cn/problems/consecutive-characters/)

image-20220610103726823

方法:遍历字符串,定义遍历count:标识当前能量 和 maxCount:最大能量
当前字符和上一个字符比较,如果相同,则count++,然后更新maxCount
如果不相同,把count置为1

注意:count和maxCount都初始化为1,因为是和前一个字符比较,所以下标从1开始

class Solution {
public:
    int maxPower(string s) {
        /*
        将count和maxCount的值都先初始化为1,表明字符串中的第一个字符当前出现的次数是一次,同时该字符也是当前连续出现次数最多的字符
        */
        int count = 1;//当前能量-当前字符连续出现的次数
        int maxCount = 1;//记录最大能量-字符连续出现次数的最大值
        //和前一个字符比较,所以i从1开始
        for(size_t i = 1;i<s.size();i++)
        {
            /*
        当前遍历到的字符与上一个字符相同,则先将count的值进行++,表明当前字符连续出现的次数加一,然后再将count的值与max的值进行比较,若此时count的值大于max的值,则应该及时更新max的值
            */
            if(s[i] == s[i-1])
            {
                count++;
                maxCount = maxCount>count?maxCount:count;
            }
            else
            {
                //如果当前遍历到的字符与上一个字符不相同,则需要将count的值重置为1,表明当前字符连续出现的次数为一次
                count = 1;
            }
        }
        return maxCount;
    }
};

【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。