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

描述

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

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

说明

  • NN 的取值范围是[1,100,000][1,100000];
  • 字符串SS只包含字符 A 和/或 B.

样例

- 样例 1

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

- 样例 2

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

- 样例 3

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

解析

minDeletionsToObtainStringInRightFormat = function (s) {
    var len=s.length, left_B=0, right_A=0, ans;
    for(i=0;i<len;i++){
        if(s.charAt(i)=='A') right_A++
    }
    ans=right_A;
    for(i=0;i<len;i++){
        if(s.charAt(i)=='A') right_A--;
        else left_B++
        ans=Math.min(ans, right_A+left_B);
    }
    return ans
}

运行结果

在这里插入图片描述

在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/SmallTeddy/article/details/108461784