• SomeBottle

    力扣 LeetCode

    图片

    20. 有效的括号 - 力扣(LeetCode)

    20. 有效的括号 - 给定一个只包括 '(',')','{','}','[',']' 的字符串 s ,判断字符串是否有效。

    有效字符串需满足:

    1. 左括号必须用相同类型的右括号闭合。
    2. 左括号必须以正确的顺序闭合。
    3. 每个右括号都有一个对应的相同类型的左括号。

     

    示例 1:

    输入:s = "()"

    输出:true

    示例 2:

    输入:s = "()[]{}"

    输出:true

    示例 3:

    输入:s = "(]"

    输出:false

    示例 4:

    输入:s...


    思路

    典型的栈应用题,每次遇到右括号时,栈顶应该有相应的左括号。最后栈不能为空。


    代码```
    class Solution {
    public:
    bool isValid(string s) {
    // 用栈即可
    stack<char> stk;
    for(char c:s){
    switch(c){
    case ')':
    if(stk.empty()||stk.top()!='('){
    return false;
    }
    stk.pop();
    break;
    case '}':
    if(stk.empty()||stk.top()!='{'){
    return false;
    }
    stk.pop();
    break;
    case ']':
    if(stk.empty()||stk.top()!='['){
    return false;
    }
    stk.pop();
    break;
    default:
    stk.emplace(c);
    }
    }
    // 注意最后栈不能为空
    return stk.empty();
    }
    };

    主楼
  • tiansuohaoer

    简单栈模拟```
    class Solution {
    public:
    bool isValid(string s) {
    string q;
    for(auto c:s){
    if(c=='('||c=='['||c=='{')q+=c;
    else{
    if(q.empty()||abs(c-q.back())>2)return 0;
    q.pop_back();
    }
    }
    return q.empty();
    }
    };

    #1
  • JARK006

    AI时代,感觉leetcode这些深究具体问题的代码实现,用处越来越少了。

    而负责把实际应用场景转述给AI,和AI沟通/协同实现真实业务需求的能力会越来越重要。

    #2

发表回复

登录后回复