牛牛特别喜欢c这个字母,如果一个字符串中c这个字符的数量超过了整个字符串长度的一半,那么牛牛对这个字符串是十分满意的。
只不过,如果这个字符串不能使牛牛感到满意,那么他可以删去这个字符串中的某些字母,使得剩下的字符串让他感到满意。
那么,在牛牛可以执行删除某些字母情况下,让牛牛感到满意的字符串的长度最长是多少呢?
给定一个字符串s,返回让牛牛感到满意的字符串的最大的长度,题目保证字符串中含有c。
题解:因为牛牛可以执行删除某些字母的操作,所以我们只需要统计字符串中c字符的数量,如果在原串中c的数量已经满足,那么只需要返回原串的长度即可;否则我们计算一下删除后满足的字符串最大的数量,公式为2 * |c| - 1。
时间复杂度:
空间复杂度:
参考代码:
class Solution { public: /** * 给定一个字符串s,返回让牛牛感到满意的字符串的最大的长度。 * @param s string字符串 代表题目中描述的s * @return int整型 */ int solve(string s) { // write code here int ans = 0; int len = s.size(); for (int i = 0; i < len; i++) { if (s[i] == 'c') ans++; } return min(len, 2 * ans - 1); } };