题目:
给你一个字符串 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 已经是有效字符串,不需要进行修改。
代码:
class Solution {
public:
int addMinimum(string word) {
//s存插入后的结果
vector<char>s;
string abc="abc";
//i指向word,j指向abc
int j=0,i=0;
while(i<word.length()){
// if(i>=word.length()&&(j%3)==0){
// break;
// }
if(word[i]==abc[j%3]){
//都向后移动
s.push_back(word[i]);
i++;j++;
}else{
//匹配不上abc,插入缺失的
s.push_back(abc[j%3]);
j++;
}
}
//如果abc字符串还有剩余,则继续插入
if((j%3)!=0){
for(int k=(j%3);k<3;k++){
s.push_back(abc[k]);
}
}
return s.size()-word.length();
}
};