LeetCode 有效的括号

时间:2022-05-05 06:20:09

 

记录:算是第一次刷Leetcode,过程充满艰辛,尝试了白板编程,不开IDE下进行。这一题算是比较简单,大致的思路框架读完题就有了,可偏偏在边界条件和非空判断上花费了不少时间,果然很菜鸡,多刷题才能熟练。

!!该代码不是最优解,只在CPP下只超越了13%的大佬,应该是菜鸡的普遍思路,后期再优化,今天做个记录

题目

  •  https://leetcode-cn.com/problems/valid-parentheses/

思路:

  • 构建一个空栈,数组指针指向第一个元素,同时栈压入第一个元素,接着数组指针移动到下一个元素和栈顶的元素比较,若符合有效括号,则将栈顶弹出,数组指针下移。重复上述操作,注意的是边界条件,栈顶弹出要进行非空判断,同时数组下标不要越界。最后判断若栈为空则是有效符号,否则不是。
class Solution {
public:
bool isValid(string s) {
        stack<char>tmp;
        int index = s.size() - 1;        
          if( s.size() > 0 ) {
              tmp.push( s[ index-- ] );
          }
         
        while( index >= 0 )
        {                      
            if( !tmp.empty() && (( s[ index ] =='(' && tmp.top() == ')' ) ||
                ( s[ index ] == '{' && tmp.top() == '}' ) ||
                       ( s[ index ] == '[' && tmp.top() == ']'  ))) {
                               tmp.pop();
                               --index;
                       }
            else{
                tmp.push( s[ index ] );
                --index;
            }                                                  
        }     
        if( tmp.empty() )
            return true;
        else return false;
    }
};