递增字符串
问题描述
定义字符串完全由 ‘A’ 和 ‘B’组成,当然也可以全是’A’或全是’B’。如果字符串从前往后都是以字典序排列的,那么我们称之为严格递增字符串。
给出一个字符串s,允许修改字符串中的任意字符,即可以将任何的’A’修改成’B’,也可以将任何的’B’修改成’A’,
求可以使s满足严格递增的最小修改次数。
0 < s的长度 < 100000。
输入描述
输入一个字符串: “AABBA”
输出描述
输出:1
示例
示例1
输入
AABBA
输出
1
示例1
输入
AABAABBBA
输出
2
解题思路
- 获取字符
B
首次出现索引位置,若不存在,则直接返回; - 获取字符
A
首次出现索引位置,若不存在,则直接返回; - 问题转化为两索引对应的字符串片段形成严格递增字符串问题;
- 字符最小数为最大修改次数;
- 定义一个指针,左边作为全为A,右边全为B,统计需要修改的次数,与最大修改次数比较获取最小值;
代码示例
/**
* 获取成为严格递增字符串的最小修改次数
* @param str 由 ‘A’ 和 ‘B’组成的字符串
* @return 最小修改次数
*/