wordpress自动更新表格,安庆网站关键词优化,自己做卖东西网站,建网站注意什么文章目录1. 题目2. 解题1. 题目
如果字符串中的所有字符都相同#xff0c;那么这个字符串是单字符重复的字符串。
给你一个字符串 text#xff0c;你只能交换其中两个字符一次或者什么都不做#xff0c;然后得到一些单字符重复的子串。 返回其中最长的子串的长度。
示例 …
文章目录1. 题目2. 解题1. 题目
如果字符串中的所有字符都相同那么这个字符串是单字符重复的字符串。
给你一个字符串 text你只能交换其中两个字符一次或者什么都不做然后得到一些单字符重复的子串。 返回其中最长的子串的长度。
示例 1
输入text ababa
输出3示例 2
输入text aaabaaa
输出6示例 3
输入text aaabbaaa
输出4示例 4
输入text aaaaa
输出5示例 5
输入text abcdef
输出1提示
1 text.length 20000
text 仅由小写英文字母组成。来源力扣LeetCode 链接https://leetcode-cn.com/problems/swap-for-longest-repeated-character-substring 著作权归领扣网络所有。商业转载请联系官方授权非商业转载请注明出处。 2. 解题
把每个字符每段的开始结束位置存起来在检查相邻的段之间的间距是不是1进行分类讨论
class Solution {
public:int maxRepOpt1(string text) {text.push_back(-);//方便代码处理vectorvectorvectorint p(26);// 存放每个字符每个连续段的 {开始位置结束位置}char prev text[0];int start 0, ans 1;for(int i 0; i text.size(); i){if(text[i] ! prev){p[prev-a].push_back({start, i-1});ans max(ans, i-start);//什么都不做的情况下的最大长度start i;prev text[i];}}for(int i 0; i 26; i){int len p[i].size();//有多少段该字符for(int j 1; j len; j){int prevEnd p[i][j-1][1];int n1 p[i][j-1][1]-p[i][j-1][0]1;int curStart p[i][j][0];int n2 p[i][j][1]-p[i][j][0]1;if(curStart-prevEnd 2)//隔一个字符{ans max(ans, n1n2(len2 ? 1 : 0));} //3段及以上可以在多添加1个字符进来else//间隔多个字符{ans max(ans, max(n11, n21));} // 两段不能联通只能过去1个字符}}return ans;}
};20 ms 11.7 MB C 我的CSDN博客地址 https://michael.blog.csdn.net/
长按或扫码关注我的公众号Michael阿明一起加油、一起学习进步