# 2645. Minimum Additions to Make Valid String
###### tags: `Leetcode` `Medium` `Math`
Link: https://leetcode.com/problems/minimum-additions-to-make-valid-string/description/
## 思路
### 思路一
分情况讨论 根据当前遍历到的字母和它前面的字母 判断他们两个中间要加多少个字符
最后还要考虑最后面要加上几个字符
### 思路二
参考[这里](https://leetcode.com/problems/minimum-additions-to-make-valid-string/solutions/3421831/java-c-python-easy-and-concise-with-explanation/)
Find out the minimum ```k``` where ```word``` is subsequence of ```"abc"``` repeated ```k``` times.
Since ```"abc"``` is increasing,
so we can split the original work into ```k``` strict increasing subarray.
## Code
### 思路一
```python=
class Solution:
def addMinimum(self, word: str) -> int:
ans = 0
for i in range(len(word)):
if word[i]=='a':
if i-1>=0 and word[i-1]!='c':
ans += 1 if word[i-1]=='b' else 2
elif word[i]=='b':
if i-1<0: ans += 1
elif word[i-1]!='a': ans += 1 if word[i-1]=='c' else 2
else:
if i-1<0: ans += 2
elif word[i-1]!='b': ans += 1 if word[i-1]=='a' else 2
if word[-1]!='c':
ans += 1 if word[-1]=='b' else 2
return ans
```
### 思路二
```python=
class Solution:
def addMinimum(self, word: str) -> int:
k = 0
prev = 'z'
for i in range(len(word)):
if prev>=word[i]:
k += 1
prev = word[i]
return k*3-len(word)
```