天天看點

Leetcode記錄 - 20.有效的括号C++ (err) 錯誤嘗試C++

有效的括号

  • C++ (err) 錯誤嘗試
  • C++

C++ (err) 錯誤嘗試

class Solution {
public:
    bool isValid(string s) {
        int a = 0;
        int b = 0;
        int c = 0;
        if (s.size()%2 ==1){
            return false;
        }
        
        for (int i = 0; i<s.size();i++){
            //for (int j = 0; j<s.size();j++){
                if (s[i]=='(' && (s[i+1]=='}' || s[i+1]==']') ){
                    return false;
                }else if (s[i]=='{' && (s[i+1]==')' || s[i+1]==']') ){
                    return false;
                }else if (s[i]=='[' && (s[i+1]==')' || s[i+1]=='}')){
                    return false;
                }
           // }
        }
        for (int i = 0; i<s.size();i++){
            
                if (s[i]=='(' ){
                    a++;
                }else if (s[i]=='{' ){
                    b++;
                }else if (s[i]=='[' ){
                    c++;
                }else if (s[i]==')' ){
                    a--;
                    if (a <0 ){
                        return false;
                    }
                }else if (s[i]=='}' ){
                    b--;
                    if (b <0 ){
                        return false;
                    }
                }else if (s[i]==']' ){
                    c--;
                    if (c <0 ){
                        return false;
                    }
                }
           
        }
        if (a != 0 || b != 0 || c != 0 ){
            return false;
        }

        return true;
    }
};

           
Leetcode記錄 - 20.有效的括号C++ (err) 錯誤嘗試C++

C++

class Solution {
public:
    bool isValid(string s) {
        stack<char> stack;
        for (int i = 0; i<s.size();i++){
            if (s[i]=='(' || s[i]=='[' || s[i]=='{' ){
                stack.push(s[i]);
            }else{
                if (stack.size()==0){
                    return false;

                }else{
                    char c = stack.top();
                    stack.pop();

                    char match;
                    if (s[i]==')'){
                        match = '(';
                    }else if (s[i]==']'){
                        match = '[';
                    }else if (s[i]=='}'){
                        match = '{';
                    }
                    if (c!= match){
                        return false;
                    }
                }
            }
        }
        if (stack.size()!=0){
            return false;
        }
        return true;
    }
};