本文主要是介绍Leetcode1704判断字符串的两半是否相似(C++题解),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
1704. 判断字符串的两半是否相似
给你一个偶数长度的字符串 s 。将其拆分成长度相同的两半,前一半为 a ,后一半为 b 。
两个字符串 相似 的前提是它们都含有相同数目的元音(‘a’,‘e’,‘i’,‘o’,‘u’,‘A’,‘E’,‘I’,‘O’,‘U’)。注意,s 可能同时含有大写和小写字母。
如果 a 和 b 相似,返回 true ;否则,返回 false 。
来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/determine-if-string-halves-are-alike
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。
思路
字符串s分成两等份,分别计数元音字母的个数。这就需要写一个计数元音字母个数的函数countLetter(string s)
返回值是个数。
ac代码
class Solution {
public://计数元音字母的个数int countLetter(string s){int res=0;set<char> S({'a','e','i','o','u'});for(auto c:s){auto x=tolower(c);if(S.count(x))res++;}return res;}bool halvesAreAlike(string s) {int n=s.size()/2;return countLetter(s.substr(0,n))==countLetter(s.substr(n));}
};
习得:
STL中set的去重功能;string中的count()函数,tolower(),toupper()分别是将string中的字母变成小写和大写。string类中substr(pos,len)函数,如果有两个参数,pos表示子串起始位置,len表示截取的子串长度。如果只有1个参数substr(pos),表示子串从pos到最后。
s.substr(0,n) //子串是从0到n
s.substr(n) //子串是从n到最后
这篇关于Leetcode1704判断字符串的两半是否相似(C++题解)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!