楼主:
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
}
}