给定一个只包括 '(',')','{','}','[',']' 的字符串,判断字符串是否有效。 有效字符串需满足: 1、左括号必须用相同类型的右括号闭合。 2、左括号必须以正确的顺序闭合。
注意空字符串可被认为是有效字符串。 示例 1: 输入: "()" 输出: true
示例 2: 输入: "()[]{}" 输出: true
示例 3: 输入: "(]" 输出: false
示例 4: 输入: "([)]" 输出: false
示例 5: 输入: "{[]}" 输出: true
package com.loo;
import java.util.Stack;
public class BracketPair { public static void main(String[] args) { System.out.println(bracketString("{3x{}[lljj]()p(){{{{{[{}]}}}}0}}")); }
public static boolean bracketString(String pairString) { if (pairString == null || "".equals(pairString)) {
// 注意空字符串可被认为是有效字符串 return true; } Stack stack = new Stack(); for (int i=0;i<pairString.length();i++) { char c = pairString.charAt(i); if (c == '(') { stack.push(c); } else if (c == '[') { stack.push(c); } else if (c == '{') { stack.push(c); } else if (c == ')') { if (stack.isEmpty()) { return false; } char s = (char)stack.peek(); if (s != '(') { return false; } else { stack.pop(); } } else if (c == ']') { if (stack.isEmpty()) { return false; } char s = (char)stack.peek(); if (s != '[') { return false; } else { stack.pop(); } } else if (c == '}') { if (stack.isEmpty()) { return false; } char s = (char)stack.peek(); if (s != '{') { return false; } else { stack.pop(); } } } return stack.isEmpty(); } }