码迷,mamicode.com
首页 > 其他好文 > 详细

leetcode_Valid Parentheses

时间:2015-05-21 10:55:47      阅读:100      评论:0      收藏:0      [点我收藏+]

标签:valid parentheses   stack   hashmap   

描述:

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();
	}



leetcode_Valid Parentheses

标签:valid parentheses   stack   hashmap   

原文地址:http://blog.csdn.net/mnmlist/article/details/45887137

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!