1. 程式人生 > >Leetcode. 20 有效括號

Leetcode. 20 有效括號

20 有效括號

給定一個只包括 ‘(’,’)’,’{’,’}’,’[’,’]’ 的字串,判斷字串是否有效。

有效字串需滿足:

左括號必須用相同型別的右括號閉合。
左括號必須以正確的順序閉合。

注意空字串可被認為是有效字串。

import java.util.Map;
import java.util.Stack;

public class Solution{
	public boolean isValid(String s) {
		if(s==null||s.equals(""))
	        return false;
	Map<Character, Character> map=new HashMap<Character, Character>();
	
	map.put(')', '(');
	map.put(']','[');
	map.put('}', '{');
	if(s.length()<2) {
		return false;
	}
	Stack<Character> stack=new Stack<>();
	char[] charArray = s.toCharArray();
	for(int i=0;i<charArray.length;i++) {
		if(map.containsKey(charArray[i])) {
			//根據鍵值找出值判斷是否與棧中相對應
			Character pop = stack.isEmpty()?'#':stack.pop();
			if(map.get(charArray[i])!=pop) {
				return false;
			}
		}else {
			
			//map的值壓進去
			stack.push(charArray[i]);
		}
	}
	
		return stack.isEmpty();
	}
	public static void main(String[] args) {
		String s=")[";
		System.out.println(new Solution().isValid(s));
	}
}