1822. 最小移动次数
描述
给定由N个字母 ‘a’ 和/或 ‘b’ 组成的字符串S。 在一次操作中,可以将一个字母替换为另一个字母(‘a’ 替换为 ‘b’ 或 ‘b’ 替换为 ‘a’)。 返回得到不包含三个连续相同字母的字符串所需的最小操作次数。
N 是一个整数,范围是: [0, 2000000]字符串S仅仅由字母 ‘a’ 和/或 ‘b’ 组成
样例 1:
输入:
S = "baaaaa"
输出:
1
解释:
将字符串变成: "baabaa", 这样一次操作就可以使得字符串S没有三个相同的连续字母。
样例 2:
输入:
S = "baaabbaabbba"
输出:
2
解释:
将字符串变成: "bbaabbaabbaa", 这样两次次操作就可以使得字符串S没有三个相同的连续字母。
样例 3:
输入:
S="baabab"
输出:
0
原题传送门
文章目录
1822. 最小移动次数描述样例 1:样例 2:样例 3:
题解最后说两句声明
题解
public class Solution {
public int MinimumMoves(String S
) {
int ret
= 0;
if (S
== null
|| S
.length() < 3) {
return ret
;
}
char preC
= S
.charAt(0);
int preCount
= 1;
for (int i
= 1; i
< S
.length(); ++i
) {
char c
= S
.charAt(i
);
if (c
== preC
) {
++preCount
;
} else {
if (preCount
>= 3) {
ret
+= preCount
/ 3;
}
preC
= c
;
preCount
= 1;
}
}
if (preCount
>= 3) {
ret
+= preCount
/ 3;
}
return ret
;
}
}
最后说两句
非常感谢你阅读本文章,如果你觉得本文对你有所帮助,请留下你的足迹,点个赞,留个言,多谢~
作者水平有限,如果文章内容有不准确的地方,请指正。
希望小伙伴们都能每天进步一点点。
声明
本文由二当家的白帽子博客原创,转载请注明来源,谢谢~