美文网首页
最大连续的相同字符

最大连续的相同字符

作者: darkness605 | 来源:发表于2020-11-07 19:41 被阅读0次

题目描述

有一个仅包含’B’和’T’两种字符的字符串s,每次操作可以把一个字符做一次转换(把一个’B’设置为’T’,或者把一个’T’置成’B’);但是操作的次数有上限k,问在有限的操作数范围内,能够得到最大连续的相同字符的子串的长度是多少。

输入描述

字符串和可以改变的次数
BTTT 1

输出描述

输出在操作次数不超过 k 的情况下,能够得到的 最大连续 全’B’子串或全’T’子串的长度。

算法分析

以B替换T为例,记录每一个B的位置,那么将连续k个B的置换为T必然存在最长的字串。
对索引为i的B而言,将前面k个B置换为A,此时索引为i的B与索引为i-k-1的B之间的字串的长度为
loc[i] - loc[i-k-1]-1。
初始化时,i从k+1开始,因为前面不足k个B的时候,只要全部置为T即可。

示例1

输入:
BTTT 1
输出:
4 (把第一个B变成T)

#include<iostream>
#include<vector>
#include<algorithm>
#include<string>
 
using namespace std;
 
string str;
int k;
int n = str.size();
int change_alpha(char a)
{
    vector<int> loc;
    for (int i = 0; i < n; ++i)
        if (str[i] == a) 
            loc.push_back(i);
        loc.push_back(n);
        int max_length = loc[k];
    
    for (int i = k + 1; i < loc.size(); ++i) {
        // loc[i]当前a实际索引, loc[i-k-1] i的前面m个数翻转之后,再前面的未翻转a的索引
        // loc[i] - loc[i-k-1] - 1 之间翻转k个a之后,中间字符的长度。
        max_length = max(max_length, loc[i] - loc[i-k-1] - 1);
    }
    return max_length;
}
 
int main()
{
    cin >> k;
    cin >> str;
    
    cout << max(change_alpha('B'), change_alpha('T')) << endl;
    return 0;
}

参考:https://blog.csdn.net/ansizhong9191/article/details/88365647?utm_medium=distribute.wap_relevant.none-task-blog-title-7

相关文章

  • 【python】统计字符串中连续的重复字符个数?

    题目:实现一个球字符串中连续出现相同字符的最大值,例如aaabbcc为a出现了3次。 分析:在遍历字符串的时候,定...

  • 最大公共子序列(LCS)

    子序列 子序列不要求字符连续(这与串不同) 公共子序列 两个字符串中的相同的子序列 最大公共子序列的例子字符串 X...

  • 找出连续相同的字符串

    找出连续相同的字符串 我们先声明一个变量,用来测试,内容如下,以 js 代码为例子, 原理都一样,任何支持正则的写...

  • 39、Excel 处理字符之中连续字符 ETStrProcess

    函数名:ETStrProcessChar 函数功能:处理文本数据重复的字符(连续相同的字符) 应用场景: 1...

  • FB 电面面经

    a----abbbbc -> ++++++++++c 把所有连续相同字母改成加号 同时dash 两侧如果有相同字符...

  • js正则判断连续相同字符【转】

    例子 给定字符串 str,检查其是否包含连续重复的字母(a-zA-Z),包含返回 true,否则返回 false

  • 王道程序员求职宝典(二)字符串

    字符串 字符串子串子序列不要求连续,但顺序相同 c风格字符串末尾'\0' 标准字符串处理函数strlenstrcm...

  • 5.最长回文子串

    题目 思路1.字符串中的一个字符(连续相同的字符作1个字符)2.依次对比字符两侧字符是否相等代码

  • 2020-03-29

    给定一个字符串,找出同一字符连续出现的最大次数 比如234555667777中,7 为连续出现最多的字符,则输出为...

  • leetcode 1668 最大重复字符串

    [leetcode]题号1668:最大重复字符串 给你一个字符串 sequence ,如果字符串word 连续重复...

网友评论

      本文标题:最大连续的相同字符

      本文链接:https://www.haomeiwen.com/subject/lhlhbktx.html