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.A:
就是 大一的时候的 stack 的课后题, 用一个stack, 来保持左括号。 -----
------------转换成数字是没有必要的。 完全是多余********************
Mistakes:
1: 又一次,华丽丽地,忘了update i,j 指针。
2: 题意没有领会透彻。 ()[]{} 也是可以的。
--------------------2nd pass--------------------
思想同上,但是不用变成数字了。
public class Solution { public boolean isValid(String s) { if(s==null || s.length()==0) return true; Stack<Character> stack = new Stack<Character>(); for(int i =0;i<s.length();i++){ char ch = s.charAt(i); if(ch=='('|| ch =='[' || ch =='{') stack.push(ch); else if (ch==')'){ if(stack.isEmpty() || stack.pop()!='(') return false; }else if (ch==']'){ if(stack.isEmpty() || stack.pop()!='[') return false; }else // if (ch=='}'){ if(stack.isEmpty() || stack.pop()!='{') return false; } return stack.isEmpty(); } }Learned:
LC 上的题目,基本都是应该十几二十行搞定的。
如果if 里面再带一层if。 然后后面还有 else的话, else会找最近的if (如果没有大括号来帮忙)
No comments:
Post a Comment