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

【leetcode系列】Valid Parentheses

时间:2014-08-07 19:01:20      阅读:236      评论:0      收藏:0      [点我收藏+]

标签:leetcode   valid parentheses   

很经典的问题,使用栈来解决,我这里自己实现了一个栈,当然也可以直接用java自带的Stack类。

自己实现的栈代码:

import java.util.LinkedList;

class StackOne {
	LinkedList<Object> data;
	int top;
	int maxSize;

	StackOne(int size) {
		// TODO Auto-generated constructor stub
		top = -1;
		maxSize = 100;
		data = new LinkedList<Object>();
	}

	int getElementCount() {
		return data.size();
	}

	boolean isEmpty() {
		return top == -1;
	}

	boolean isFull() {
		return top + 1 == maxSize;
	}

	boolean push(Object object) throws Exception {
		if (isFull()) {
			throw new Exception("栈满");
		}
		data.addLast(object);
		top++;
		return true;
	}

	Object pop() throws Exception {
		if (isEmpty()) {
			throw new Exception("栈空");
		}
		top--;
		return data.removeLast();
	}

	Object peek() {
		return data.getLast();
	}
}

判断输出是否有效:

public class Solution {

	public static boolean isValid(String in) {
		StackOne stackOne = new StackOne(100);
		boolean result = false;
		char[] inArray = in.toCharArray();
		for (char i : inArray) {
			if (i == '(' || i == '[' || i == '{') {
				try {
					stackOne.push(i);
				} catch (Exception e) {
					// TODO Auto-generated catch block
					e.printStackTrace();
				}
				continue;
			}
			if (i == ')') {
				if (stackOne.isEmpty()) {
					result = false;
				} else {
					char tmp = '\u0000';
					try {
						tmp = (Character) stackOne.pop();
					} catch (Exception e) {
						// TODO Auto-generated catch block
						e.printStackTrace();
					}
					if (tmp == '(') {
						result = true;
					}
				}
			}
			if (i == ']') {
				if (stackOne.isEmpty()) {
					result = false;
				} else {
					char tmp = '\u0000';
					try {
						tmp = (Character) stackOne.pop();
					} catch (Exception e) {
						// TODO Auto-generated catch block
						e.printStackTrace();
					}
					if (tmp == '[') {
						result = true;
					}
				}
			}
			if (i == '}') {
				if (stackOne.isEmpty()) {
					result = false;
				} else {
					char tmp = '\u0000';
					try {
						tmp = (Character) stackOne.pop();
					} catch (Exception e) {
						// TODO Auto-generated catch block
						e.printStackTrace();
					}
					if (tmp == '{') {
						result = true;
					}
				}

			}
		}
		if (!stackOne.isEmpty()) {
			result = false;
		}
		return result;
	}

	public static void main(String[] args) {
		System.out.print(isValid("(}"));
	}
}


【leetcode系列】Valid Parentheses,布布扣,bubuko.com

【leetcode系列】Valid Parentheses

标签:leetcode   valid parentheses   

原文地址:http://blog.csdn.net/a2bgeek/article/details/38422333

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