【精】LintCode领扣算法问题答案:1821. 最小删除以获得正确格式的字符串

    科技2022-08-05  121

    1821. 最小删除以获得正确格式的字符串

    描述

    给定一个长度为 N 的只包含字母 A 和/或 B 的字符串 S。我们的目标是通过删除最少的字符使得字符串变成A…A的形式(所有的A都在B前面)。特别的,如果字符串只包含A或B也是符合条件的。

    请写一个函数,给定一个字符串 S,返回最小需要删除的字符数。

    N 的取值范围是[1,100000];字符串S只包含字符 A 和/或 B.

    样例 1:

    输入: "BAAABAB" 输出: 2 说明: 我们可以通过删除第一个B和最后一个A来生成"AAABB"

    样例 2:

    输入: "BBABAA" 输出: 3 说明: 我们可以删除所有的A或B

    样例 3:

    输入: "AABBBB" 输出: 0 说明: 我们不需要删除任何字符,因为字符串本身符合条件。

    原题传送门


    文章目录

    1821. 最小删除以获得正确格式的字符串描述样例 1:样例 2:样例 3: 题解最后说两句声明


    题解

    public class Solution { /** * @param s: the string * @return: Min Deletions To Obtain String in Right Format */ public int minDeletionsToObtainStringInRightFormat(String s) { // write your code here int ret = 0; int rightACount = 0; int leftBCount = 0; for (int i = 0; i < s.length(); i++) { char c = s.charAt(i); if ('A' == c) { rightACount++; } } ret = rightACount; for (int i = 0; i < s.length(); i++) { char c = s.charAt(i); if ('A' == c) { rightACount--; } else { leftBCount++; } ret = Math.min(ret, leftBCount + rightACount); } return ret; } }

    最后说两句

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

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

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

    声明

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

    Processed: 0.010, SQL: 8