1. 程式人生 > >LeetCode第20題 左右括號匹配

LeetCode第20題 左右括號匹配

第一次提交成功程式碼:

import java.util.Stack;

public class Solution {
	public boolean isValid(String s) {
		
	    Stack<Character> mystack=new Stack<>();
		if(s.isEmpty()) {
			return true;
		}
		
		for(int i=0;i<s.length();i++) {
			if(s.charAt(i)=='{'||s.charAt(i)=='['||s.charAt(i)=='(') {
				mystack.push(s.charAt(i));
			}
			if(s.charAt(i)=='}') {
				if(mystack.isEmpty()||mystack.pop()!='{') {
					return false;
				}				
			}
			if(s.charAt(i)==']') {
				if(mystack.isEmpty()||mystack.pop()!='[') {
					return false;
				}
			}
			if(s.charAt(i)==')') {
				if(mystack.isEmpty()||mystack.pop()!='(') {
					return false;
				}
			}
		}
		if(mystack.isEmpty()) {
			return true;
		}else {
			return false;
		}
	}

	public static void main(String[] args) {
		Solution sl=new Solution();
		System.out.println(sl.isValid("dsffv}"));
	}
}

第二次修改後程式碼:

import java.util.Stack;

public class Solution {
	public boolean isValid(String s) {
		
	    Stack<Character> mystack=new Stack<>();
	    for(int i=0;i<s.length();i++) {
	    	char c=s.charAt(i);
	    	if(c=='{'||c=='['||c=='(') {
	    		mystack.push(c);
	    	}else if(c=='}'||c==']'||c==')') {
	    		if(mystack.isEmpty()) {
	    			return false;
	    		}
	    		char topChar=mystack.pop();
	    		if(c==')'&&topChar!='(') {
	    			return false;
	    		}
	    		if(c==']'&&topChar!='[') {
	    			return false;
	    		}
	    		if(c=='}'&&topChar!='{') {
	    			return false;
	    		}	
	    	}
	    }
	    return mystack.isEmpty();
	}

	public static void main(String[] args) {
		Solution sl=new Solution();
		System.out.println(sl.isValid("dhjgui"));
	}
}