🔴力扣原题:
🟠题目简述:
给你一个偶数长度的字符串 s 。将其拆分成长度相同的两半,前一半为 a ,后一半为 b 。
两个字符串 相似 的前提是它们都含有相同数目的元音(‘a’,‘e’,‘i’,‘o’,‘u’,‘A’,‘E’,‘I’,‘O’,‘U’)。注意,s 可能同时含有大写和小写字母。
如果 a 和 b 相似,返回 true ;否则,返回 false 。
🟡解题思路:
- 模拟大法好;
- 利用
set
来计数; - over;
🟢C++代码:
class Solution {
public:
bool halvesAreAlike(string s) {
int n = s.size();
set<char> set1 {'a','e','i','o','u','A','E','I','O','U'};
int n1 = 0, n2 = 0;
int i = 0;
for(auto &char1 : s)
{
if(i < n/2)
{
if(set1.count(char1))
{
n1++;
}
}
else
{
if(set1.count(char1))
{
n2++;
}
}
i++;
}
return (n1 == n2);
}
};