20-有效的括号
给定一个只包括 ‘(‘,‘)‘,‘{‘,‘}‘,‘[‘,‘]‘ 的字符串 s ,判断字符串是否有效。
有效字符串需满足:
左括号必须用相同类型的右括号闭合。
左括号必须以正确的顺序闭合。
示例 1:
输入:s = "()"
输出:true
示例 2:
输入:s = "()[]{}"
输出:true
示例 3:
输入:s = "(]"
输出:false
使用Stack实现:
初始化:Deque<Character> stack = new ArrayDeque<Character>();
返回栈顶的元素并且弹出:pop()
将新元素压入栈内:add()或push()
思路:将左括号压入栈内,碰到右括号则返回栈顶元素进行比较。配对成功则返回true,否则返回false
java代码实现:
public boolean isValid(String s)
{
if(s.length() == 0)
{ //如果字符串返回长度为0 直接返回true
return true;
}
if(s.length() % 2)
{//如果字符串长度为奇数,则返回true(因为括号都成双出现)
return false;
}
Deuqe<Charcter> stack = new ArrayStack<Character>();
char cc[] = s.toCharArray();
for(char c:cc)
{
if(c==‘(‘&&c==‘[‘&&c==‘{‘)
{
stack.push(c)
}else{
if(stack.size() == 0)
{
return false;
}else
{
temp = stack.pop();
if(c == ‘)‘)
{
if(temp != ‘(‘)
{
return false;
}
}
if(c == ‘)‘)
{
if(temp != ‘(‘)
{
return false;
}
}
if(c == ‘)‘)
{
if(temp != ‘(‘)
{
return false;
}
}
}
}
//最后判断栈中是否还有元素
if(stack.size() == 0)
{return true;}
else
{return false;}
}
}
原文:https://www.cnblogs.com/mengriver/p/14348797.html