Rust每日一题(5)---数据结构-栈-valid-parentheses

  • Po
  • 更新于 2022-08-25 23:08
  • 阅读 1628

Rust每日一题(5)---数据结构-栈-valid-parentheses

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()
    }
}
  • 原创
  • 学分: 2
  • 分类: Rust
  • 标签: Rust 
点赞 0
收藏 0
分享
本文参与登链社区写作激励计划 ,好文好收益,欢迎正在阅读的你也加入。

0 条评论

请先 登录 后评论
Po
Po
0xB332...C3ba
Blockchain & AI change the world!