构造有效字符串的最少插入数

构造有效字符串的最少插入数

CategoryDifficultyLikesDislikes
algorithmsMedium (56.43%)41-

Tags

Unknown

Companies

Unknown

给你一个字符串 word ,你可以向其中任何位置插入 "a"、"b" 或 "c" 任意次,返回使 word 有效 需要插入的最少字母数。

如果字符串可以由 "abc" 串联多次得到,则认为该字符串 有效 。

示例 1:

1
2
3
输入:word = "b"
输出:2
解释:在 "b" 之前插入 "a" ,在 "b" 之后插入 "c" 可以得到有效字符串 "abc" 。

示例 2:

1
2
3
输入:word = "aaa"
输出:6
解释:在每个 "a" 之后依次插入 "b" 和 "c" 可以得到有效字符串 "abcabcabc" 。

示例 3:

1
2
3
输入:word = "abc"
输出:0
解释:word 已经是有效字符串,不需要进行修改。 

提示:

  • 1 <= word.length <= 50
  • word 仅由字母 "a"、"b" 和 "c" 组成。

Discussion | Solution

解法

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
impl Solution {
    pub fn add_minimum(word: String) -> i32 {
        match word.as_bytes() {
            [b'c', ..] => Solution::add_minimum(String::from(&word[1..])) + 2,
            [b'b', b'c', ..] => Solution::add_minimum(String::from(&word[2..])) + 1,
            [b'b', ..] => Solution::add_minimum(String::from(&word[1..])) + 2,
            [b'a', b'b', b'c', ..] => Solution::add_minimum(String::from(&word[3..])),
            [b'a', b'b', ..] => Solution::add_minimum(String::from(&word[2..])) + 1,
            [b'a', b'c', ..] => Solution::add_minimum(String::from(&word[2..])) + 1,
            [b'a', ..] => Solution::add_minimum(String::from(&word[1..])) + 2,
            _ => 0,
        }
    }
}
updatedupdated2024-08-252024-08-25