zoukankan      html  css  js  c++  java
  • 20. Valid Parentheses(C++)

    Given a string containing just the characters '('')''{''}''[' and ']', determine if the input string is valid.

    The brackets must close in the correct order, "()" and "()[]{}" are all valid but "(]" and "([)]" are not.

    Solution :
     1 class Solution {
     2 public:
     3     bool isValid(string s) {
     4         if(s.size()<2) return false;
     5         stack<char> stk;
     6         for(int i=0;i<s.size();i++){
     7             if((s[i]=='(')||(s[i]=='[')||(s[i]=='{')) stk.push(s[i]);
     8             if((s[i]=='}')||(s[i]==']')||(s[i]==')')){
     9                 if(stk.empty()) return false;
    10                 char c=stk.top();
    11                 stk.pop();
    12                 switch (s[i]){
    13                     case '}': if(c!='{') return false; break;
    14                     case ')': if(c!='(') return false; break;
    15                     case ']': if(c!='[') return false; break;
    16                 }
    17             }
    18         }
    19         if(!stk.empty()) return false;
    20         return true;
    21     }
    22 };

    better solution:

     1 class Solution {
     2 public:
     3     bool isValid(string s) {
     4         stack<char> paren;
     5         for (char& c : s) {
     6             switch (c) {
     7                 case '(': 
     8                 case '{': 
     9                 case '[': paren.push(c); break;
    10                 case ')': if (paren.empty() || paren.top()!='(') return false; else paren.pop(); break;
    11                 case '}': if (paren.empty() || paren.top()!='{') return false; else paren.pop(); break;
    12                 case ']': if (paren.empty() || paren.top()!='[') return false; else paren.pop(); break;
    13                 default: ; // pass
    14             }
    15         }
    16         return paren.empty() ;
    17     }
    18 };
  • 相关阅读:
    如何利用WGET覆写已存在的档案
    linux 脚本返回值
    ubuntu的配置网络
    非交互模式修改Ubuntu密码的命令
    [zz]python多进程编程
    [zz]linux修改密码出现Authentication token manipulation error的解决办法
    [zz]4.1.5 进程的处理器亲和性和vCPU的绑定
    vcpu
    非交互式调用交互式程序
    HDOJ_ACM_饭卡
  • 原文地址:https://www.cnblogs.com/devin-guwz/p/6507086.html
Copyright © 2011-2022 走看看