Re: [閒聊] 每日leetcode

作者: yam276 ('_')   2024-07-11 16:22:07
※ 引述《oin1104 (是oin的說)》之銘言:
: 題目:
: 給你字串
: 裡面有()跟其他字母
: 每次遇到()都要翻轉中間所有的東西
: 然後()就消失
: 回傳他給的字串翻轉後的結果
思路:
用stack
但我沒怎麼遇過
害我我去查了
幸好Rust多半都有push pop可以用
步驟
1. 沒遇到括號就放進str
2. 遇到左括號先把目前的str放進stack
3. 遇到右括號代表這一段結束,
把目前存str的反轉,
把stack倒出來,把反轉的放在stack的str後面,
然後因為不用再處理,所以全部放回str,重覆到結束
Code:
impl Solution {
pub fn reverse_parentheses(s: String) -> String {
let mut stack = Vec::new();
let mut cur_str = String::new();
for ch in s.chars() {
if ch == '(' {
stack.push(cur_str);
cur_str = String::new();
} else if ch == ')' {
cur_str = cur_str.chars().rev().collect();
if let Some(mut top) = stack.pop() {
top.push_str(&cur_str);
cur_str = top;
}
} else {
cur_str.push(ch);
}
}
cur_str
}
}
作者: oin1104 (是oin的說)   2024-07-11 16:39:00
大師

Links booklink

Contact Us: admin [ a t ] ucptt.com