连续字符&&有效的字母异味词
【摘要】 242.有效的字母异位词https://leetcode.cn/problems/valid-anagram/方法1:对两个字符串排序,然后判断二者是否相同class Solution {public: bool isAnagram(string s, string t) { //方法1:对两个字符串排序,判断二者是否一致 sort(s.begin(),s...
242.有效的字母异位词
方法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. 连续字符
方法:遍历字符串,定义遍历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)