[Algorithm/java] Valid Parenthese
Problem
Input : "{[]}"
Output : true
Input : "([)]"
Output : false
Input : "(){}[]"
Output : true
Input : "(]"
Output : false
Solution
- Stack 이용
- 오픈 괄호들 먼더 스택에 넣는다.
- 클로즈 괄호들이 나오면 뺀다.
- 최종으로 stack에 남아있는지를 확인한다.
- Map, Switch Case이용
Code
package stack_queue;
import java.util.*;
public class ValidParentheses {
public static void main(String[] args){
//String exp="{({})}";
String exp = "([)]";
System.out.println(isValid(exp));
}
public static boolean isValid(String s){
//1 error check (괄호는 늘 쌍으로 이루어지기에 홀수 갯수라면 무조건 false 리턴)
if(s.length()%2 != 0) return false;
Stack<Character> stack = new Stack<>();
//2 경우에 따라 나눠줄 수 있도록 반복문 돌려서 체크
for(int i=0; i<s.length(); i++){
switch(s.charAt(i)){
case ')':
if(!stack.empty() && stack.peek()=='(') stack.pop();
break;
case '}':
if(!stack.empty() && stack.peek()=='{') stack.pop();
break;
case ']':
if(!stack.empty() && stack.peek()=='[') stack.pop();
break;
default:
stack.push(s.charAt(i));
break;
}
}
return stack.empty();
}
}
Author And Source
이 문제에 관하여([Algorithm/java] Valid Parenthese), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@jaeyunn_15/Algorithm-Valid-Parenthese저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)