题目:
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.
翻译:
给一个字符串,判断括号是否匹配成功。
思路:
用一个字符栈,读到一个字符时判断,如果栈顶和当前这个字符是满足左右括号匹配,则弹出,否则压栈。
如果最后栈为空,说明匹配成功。
代码:
public static boolean isValid(String s) { if(s.length() == 0 ) return true; Stack<Character> st = new Stack<Character>(); st.push(s.charAt(0)); for(int i = 1 ; i< s.length();i++) { if(!st.empty()&& ismatch(st.peek(), s.charAt(i)))//非空且栈顶和当前字符匹配,弹出 st.pop(); else { st.push(s.charAt(i)); } } if(st.empty()) return true; return false; } public static boolean ismatch(char a,char b) { if((a=='('&&b==')')||(a=='{'&&b=='}')||(a=='['&&b==']')) return true; else return false; }
时间: 2024-10-18 17:11:49