LeetCode:2645.构造有效字符串的最少插入数
题目
给你一个字符串 word
,你可以向其中任何位置插入 "a"
、"b"
或 "c"
任意次,返回使 word
有效 需要插入的最少字母数。
如果字符串可以由 "abc"
串联多次得到,则认为该字符串 有效 。
示例 1:
输入:word = "b"
输出:2
解释:在 "b" 之前插入 "a" ,在 "b" 之后插入 "c" 可以得到有效字符串 "abc" 。
示例 2:
输入:word = "aaa"
输出:6
解释:在每个 "a" 之后依次插入 "b" 和 "c" 可以得到有效字符串 "abcabcabc" 。
示例 3:
输入:word = "abc"
输出:0
解释:word 已经是有效字符串,不需要进行修改。
提示:
1 <= word.length <= 50
word
仅由字母"a"、"b" 和 "c"
组成。
思路:
在该题目中a
需要插入bc``b
需要插入ac``c
需要插入ab
。
在不计算相邻两项的情况下共需要插入word[i].size()*2
个字母。
相邻两项为:ab,bc,ac
时间分别需要插入c,a,b
,不考虑相邻情况需要插入4个,因此相邻为这三种情况时只需要插入一个字母即可,减去重复3个。
在所有相邻情况中aa,ab,ac,ba,bb,bc,ca,cb,cc
只有当前一个字符ASCII小于后一个时才满足情况。
代码(C++):
class Solution {
public:
int addMinimum(string word) {
int count = 0;
for (int i = 0; i < word[i]-1; ++i) {
if (word[i]<word[i+1]){
count++;
}
}
return word.size()*2-count*3;
}
};