【精】LintCode领扣算法问题答案:1822. 最小移动次数

    科技2022-08-06  104

    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 { /** * @param S: a string * @return: return the minimum number of moves */ public int MinimumMoves(String S) { // write your code here 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; } }

    最后说两句

    非常感谢你阅读本文章,如果你觉得本文对你有所帮助,请留下你的足迹,点个赞,留个言,多谢~

    作者水平有限,如果文章内容有不准确的地方,请指正。

    希望小伙伴们都能每天进步一点点。

    声明

    本文由二当家的白帽子博客原创,转载请注明来源,谢谢~

    Processed: 0.094, SQL: 8