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
;
    }
}
 
最后说两句
 
非常感谢你阅读本文章,如果你觉得本文对你有所帮助,请留下你的足迹,点个赞,留个言,多谢~
 
作者水平有限,如果文章内容有不准确的地方,请指正。
 
希望小伙伴们都能每天进步一点点。
 
声明
 
本文由二当家的白帽子博客原创,转载请注明来源,谢谢~