LeetCode 20.有效的括号 Valid Parentheses

题目链接

给定一个只包括‘(’,‘)’,‘[’,‘]’,‘{’,‘}’的字符串,判断字符串是否有效。

思路1:

利用栈,是前一半括号的,入栈,是后一半括号的,判断栈顶元素是不是和它相匹配,是则出栈;不是返回false。

遍历完整个字符串后,判断栈是否为空,空则返回true;非空则返回false。


思路2:

和思路1一样的思路,不利用栈了,只是换成在原字符串上操作。

用一个变量,模拟栈顶指针。

代码如下:

class Solution {
public:
    bool isValid(string s) {
        int i=-1,j=0;//i为模拟栈顶指针,初始化为-1,表示空栈
        int len=s.length();
        int arr[128];
        arr['(']=1;
        arr['[']=2;
        arr['{']=3;
        
        arr[')']=-1;
        arr[']']=-2;
        arr['}']=-3;
        while(j<len)
        {
            if(arr[s[j]]>0)   s[++i]=s[j];//i为模拟栈顶指针
            else
            {
                if(i>=0&&arr[s[j]]+arr[s[i]]==0)
                {
                    i--;
                }
                else return false;
            }
            j++;
        }
        if(i==-1)   return true;//空栈
        else return false;
    }
};

猜你喜欢

转载自blog.csdn.net/ZRXSLYG/article/details/80531301
今日推荐