题目解析
新增一个用例:
AAABAAABBBBABB
该用例只需要修改两次。
我的解题思路如下:
首先,我们需要记录字符串长度为total,然后统计字符串中A的数量,记为A。
然后用动态规划,即定义一个dp数组,dp[i]的含义是 [0,i]闭区间内有多少个A。
统计好后,我们可以假设将 0 ~ i 闭区间内全部变成A,需要修改多少次?
0~i闭区间内理论会有 i+1 个A,而目前有dp[i] 个A,因此需要修改 i + 1 - dp[i] 次。
接着考虑将 i+1 ~ str.length-1 区间内全部变成B,需要修改多少次?
dp[i]表示 0~i闭区间内A的数量,那么 i+1~str.length-1 区间内A的数量= A - dp[i]
因此需要修改A - dp[i]次
因此,一共需要修改 i + 1 - dp[i] + A - dp[i] 次
我们从 0 ~ str.length-1 遍历出每一个 i 带入上面公式,保留最小的结果,就是题解。
另外,本题0 < s的长度 < 100000,如果使用dp数组的话,最

已下架不支持订阅
3207






