本文共 798 字,大约阅读时间需要 2 分钟。
题目来源:
Description
这里有一个字符串 S,由于 “a” 是一个可爱的字符,我们希望 “a” 在字符串 S 中数量超过一半,这样的字符串 S 是我们想要的。
比如,“aaabb”、“axaa” 是我们想要的字符串,而 “baca”、“awwwa”、""(空串)不是我们想要的。 为了获得我们想要的字符串,可以从 S 中删除某些字符。那么在删除之后,我们想要的串最长可以保留多少个字符。Input
输入一行,包含一个字符串 S ( 1 ≤ |S| ≤ 50 )。S仅包含小写字母,而且肯定包含至少 一个 “a”,保证答案一定存在。
Output
输出一个整数,表示删除某些字符之后得到想要的字符串的最大长度。
Sample Input
aaabaa
Sample Output
6
Note
样例没有删除字符就得到了想要的字符串。
根据题意,“aabc” 的输出应该是 3,需要删除 “bc” 中的的一个字符才能保证字符串中的 “a” 能超过一半。解题思路:
判断a的个数cnt是否大于len/2,如果大于输出len,反之输出2*cnt-1;
AC代码1:
#includeusing namespace std;#define SIS std::ios::sync_with_stdio(false),cin.tie(0),cout.tie(0)#define endl '\n'int main(){ SIS; int cnt=0; string s; cin >> s; int len=s.size(); for(int i=0;i len/2 ? len : 2*cnt-1) << endl; return 0;}
转载地址:http://bsyof.baihongyu.com/