【华为OD机试真题】递增字符串(C&C++&java&python&JavaScript&go)100%通过率【2023(B卷)100分】

递增字符串

题目描述

定义字符串完全由 A 和 B组成,当然也可以全是A或全是B。
如果字符串从前往后都是以字典序排列的,那么我们称之为严格递增字符串。
给出一个字符串 s,允许修改字符串中的任意字符,即可以将任何的A修改成B,也可以将任何的B修改成A,求可以使s满足严格递增的最小修改次数。
0 < s的长度 < 100000。

输入描述

输入一个字符串: AABBA

输出描述

输出:1
修改最后一位得到AABBB。

示例一

输入

AABBA

输出

1

思路解析和复杂度分析

解题思路:

遍历整个字符串s,同时统计A和B的数量。
对于每个字符,如果是A,则增加A的计数;如果是B,则增加B的计数。
在遍历过程中,计算使得当前字符串变成严格递增的最小修改次数。我们可以维护一个变量ans来记录当前的最小修改次数。对于每个字符,我们有两种选择:要么修改这个字符,要么不修改。这两种选择分别对应的修改次数为:当前字符为B时,ans加1&#

猜你喜欢

转载自blog.csdn.net/weixin_45541762/article/details/132093595