0%

leetCode-20:Valid Parentheses

问题描述

给定一个字符串,只包含{}[]()。要求判断这个字符串是否是符合括号的原则的。题目链接:**点我**

样例输入输出

输入:{[]}

输出:true

输入:{[}]

输出:false

问题解法

使用栈存储左括号,遍历字符串,每次遇到左括号时压入栈,遇到右括号时,查看栈顶的左括号是否与这个右括号对应,如果对应,则将栈顶元素出栈,否则说明字符串不合法。当字符串遍历结束时,如果栈中元素为空,说明字符串合法,否则字符串不合法。代码如下

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
class Solution 
{
public boolean isValid(String s)
{
if (s == null)
{
return true;
}

Stack<Character> stack = new Stack<>();
int length = s.length();
for (int i = 0; i < length; i++)
{
char ch = s.charAt(i);
if (ch == '[' || ch == '(' || ch == '{')
{
stack.push(Character.valueOf(ch));
continue;
}

if (stack.isEmpty())
{
return false;
}

char topCh = stack.pop();
if (ch == ']' && topCh == '[')
{
continue;
}

if (ch == ')' && topCh == '(')
{
continue;
}

if (ch == '}' && topCh == '{')
{
continue;
}

return false;
}

return stack.isEmpty();
}
}