精華區beta Marginalman 關於我們 聯絡資訊
394. 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 } } -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 114.32.48.170 (臺灣) ※ 文章網址: https://www.ptt.cc/bbs/Marginalman/M.1749712752.A.3D2.html
oin1104: 我快哭了 你怎麼每天都這麼認真 我好崇拜你 06/12 15:22
yam276: 你把玩PY的時間拿去刷題就能刷很多了 06/12 15:24