标签:
Valid Parentheses:Given a string containing just the characters ‘(‘
, ‘)‘
, ‘{‘
, ‘}‘
, ‘[‘
and ‘]‘
, determine if the input string is valid.The brackets must close in the correct order, "()"
and "()[]{}"
are all valid but "(]"
and "([)]"
are not.
题意:给定一个字符串,由‘(‘
, ‘)‘
, ‘{‘
, ‘}‘
, ‘[‘
和‘]‘组成,判断这串字符串是不是有效的组合。
思路:使用栈来解决此题。遍历字符串,如果第一个字符为)} ]中的一个则直接返回false;否则将其压入栈中。接着处理下面的字符:
(1)如果是( { [中的一个则直接压入栈中
(2)如果是})]中的一个,则和栈顶元素比较:如果栈顶元素是遇到元素的匹配字符则栈顶元素出栈,否则返回false
最后判断栈是否为空,如果为空则返回true,否则返回false。
代码:
public boolean isValid(String s) { Stack stack = new Stack (); if (s.length()<2) return false; String temp = String.valueOf(s.charAt(0)); if (temp.equals(")")||temp.equals("}")||temp.equals("]")) return false; for(int i=0;i<s.length();i++) { temp = String.valueOf(s.charAt(i)); if(temp.equals("(")||temp.equals("{")||temp.equals("[")){ stack.push(temp); } else if(!stack.isEmpty()) { switch (temp) { case ")": if(("(").equals(stack.peek())){ stack.pop(); }else { return false; } break; case "}": if(("{").equals(stack.peek())){ stack.pop(); }else { return false; } break; case "]": if(("[").equals(stack.peek())){ stack.pop(); }else{ return false; } break; default: return false; } } else { return false; } } //for if (stack.isEmpty()){ return true; }else { return false; } }
LeetCode(20):Valid Parentheses
标签:
原文地址:http://www.cnblogs.com/Lewisr/p/5115107.html