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