Rust每日一题(5)---数据结构-栈-valid-parentheses
leetcode地址 给定一个只包括 '(',')','{','}','[',']' 的字符串 s ,判断字符串是否有效。
有效字符串需满足:
左括号必须用相同类型的右括号闭合。 左括号必须以正确的顺序闭合。
示例 1:
输入:s = "()"
输出:true
示例 2:
输入:s = "()[]{}"
输出:true
示例 3:
输入:s = "(]"
输出:false
示例 4:
输入:s = "([)]"
输出:false
示例 5:
输入:s = "{[]}"
输出:true
难度: 简单
核心还是分析算法的操作步骤,由于匹配是从左到右,因此每次遇到([}
这三种字符可以直接压入,遇到其他字符就说明需要匹配了,此时可进行弹栈操作,比较弹出的元素是否与当前遍历的字符是否匹配(在具体实现上可以压入相反的元素,直接比较是否相等)。
impl Solution {
pub fn is_valid(s: String) -> bool {
let mut stack = vec![];
for i in 0..s.len() {
let c = s.get(i..i+1).unwrap();
match c {
"(" => stack.push(")"),
"{" => stack.push("}"),
"[" => stack.push("]"),
_ => {
if stack.is_empty() || c!=stack.pop().unwrap() {
return false
}
}
}
}
return stack.is_empty()
}
}
如果觉得我的文章对您有用,请随意打赏。你的支持将鼓励我继续创作!