描述:
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.
思路:
很简单的字符串匹配问题,直接用栈就可以实现,为使程序更加高效,当要匹配的字符种类比较多的时候可以考虑用HashMap来保存匹配对
代码:
用if else来比较匹配对
public boolean isValid(String s) { if(s==null||s.length()==0) return true; Stack<Character> st=new Stack<Character>(); char ch; int len=s.length(); for(int i=0;i<len;i++) { ch=s.charAt(i); if(!st.empty()) { if(ch==')'&&st.peek()=='(') { st.pop(); }else if(ch==']'&&st.peek()=='[') { st.pop(); } else if(ch=='}'&&st.peek()=='{') { st.pop(); }else st.push(ch); }else st.push(ch); } if(!st.empty()) return false; return true; }
用HashMap来保存匹配对
public boolean isValid(String s) { if (s == null || s.length() == 0) return true; Stack<Character> st = new Stack<Character>(); Map<Character, Character> map = new HashMap<Character, Character>(); map.put('(', ')'); map.put('{', '}'); map.put('[', ']'); int len=s.length(); for (int i = 0; i < len; i++) { if (!st.empty()&&map.containsKey(st.peek())&&s.charAt(i) == map.get(st.peek())) { st.pop(); }else st.push(s.charAt(i)); } return st.empty(); }
时间: 2024-10-06 00:31:16