作者:
yam276 ('_')
2025-06-12 15:19:10394. Decode String
題目:
給你像是 2[a[2b]] 的格式
你要列出解壓後的文字
2[a[2b]] = abbabb
思路:
你會需要類似狀態機的迴圈
有幾種狀態
1. 數字
2. [
3. ]
4. 字母
數字就每次 *10 加上去
[ 要把目前數字字母放進 stack
] 要更新結果 = 現有字串 + 新解壓字串
字母就直接放進結果
優先度 1 > 2 > 3 > 4
所以第四種的字母一定是獨立不需要解壓的
Code:
impl Solution {
pub fn decode_string(s: String) -> String {
let mut num = 0;
let mut str = String::new();
let mut stack = Vec::new();
for c in s.chars() {
if c.is_digit(10) {
num = num * 10 + c.to_digit(10).unwrap();
} else if c == '[' {
stack.push((num, str.clone()));
str.clear();
num = 0;
} else if c == ']' {
let (repeat, prev_str) = stack.pop().unwrap();
str = prev_str + &str.repeat(repeat as usize);
} else {
str.push(c);
}
}
str
}
}