很经典的问题,使用栈来解决,我这里自己实现了一个栈,当然也可以直接用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
原文地址:http://blog.csdn.net/a2bgeek/article/details/38422333