首页 > 代码库 > 【leetcode系列】Valid Parentheses

【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 = http://www.mamicode.com/new LinkedList();>
判断输出是否有效:

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