首页 > 其他 > 详细

leetcode_Valid Parentheses

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

描述:

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

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

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!