给你一个偶数长度的字符串s
,将其拆分成长度相同的两半,前一半为a
,后一半为b
。
两个字符串相似的前提是它们都含有相同数目的元音('a'
, 'e'
, 'i'
, 'o'
, 'u'
, 'A'
, 'E'
, 'I'
, 'O'
, 'U'
)。
注意:s
可能同时含有大写和小写字母。
如果a
和b
相似,返回true
,否则,返回false
。
示例:
?输入:s = “book”
?输出:true
思路:
该题的就是让我们遍历字符串,判断字符串的前半段和后半段是否具有相同数目的元音字母,该题目主要考察两点:
- 遍历字符串。
- 哈希表的使用。
- 将元音字母存储到unordered_set容器当中。
- 遍历字符串的前半部分,统计元音字母的个数。
- 遍历字符串的后半部分,与前半部分的元音字母个数进行抵消。
- 若最终count被抵消为0,则说明该字符串前半段和后半段具有相同数目的元音字母。
class Solution {
public:
bool halvesAreAlike(string s) {
//1、将元音字母存储到unordered_set容器中
string str = "aeiouAEIOU";
unordered_set us(str.begin(), str.end());
int count = 0;
//2、遍历字符串的前半部分,统计元音字母个数
for (size_t i = 0;
i < s.size() / 2;
i++)
{
if (us.find(s[i]) != us.end())
count++;
}
//3、遍历字符串的后半部分,与前半部分的元音字母个数进行抵消
for (size_t i = s.size() / 2;
i < s.size();
i++)
{
if (us.find(s[i]) != us.end())
count--;
}
//4、若最终count被抵消为0,则说明该字符串前半段和后半段具有相同数目的元音字母
return count == 0;
}
};
推荐阅读
- leetcode|leetcode242. 有效的字母异位词
- 数据结构与算法|《数据结构与算法》(五)- 链表详解
- 枚举模拟|2020年第十一届蓝桥杯省赛Python组(真题+解析+代码)(蛇形填数)
- 蓝桥杯|蓝桥杯备战 每日训练3道 真题解析
- 力扣每日一题|力扣(每日一题)—— 2016. 增量元素之间的最大差值
- 力扣每日一题|力扣(每日一题)—— 1706. 球会落何处
- 数据结构|数据结构与算法(七)-哈希表(HashTable)
- 二叉树(Binary|LeetCode 536. Construct Binary Tree from String - 二叉树系列题18
- #|二进制粒子群算法的配电网故障定位(Python&Matlab实现)