작성
·
164
1
안녕하세요 강의 잘 보고 있습니다.
그런데 릿코드랑 이클립스에서 아래코드를 디버깅해봤는데, 릿코드에서는 정답이 나오는데 이클립스에서는 오답이 나옵니다.
코드에서 pop하는 연산이 없는 것 같은데 어떻게 정답처리(스택이 비게 되어 true리턴)가 되는지 궁금합니다.
감사합니다.
static Map<Character,Character> map = new HashMap<>();
static {
map.put('(', ')');
map.put('{', '}');
map.put('[', ']');
}
public static void main(String[] args) {
// TODO Auto-generated method stub
//String s = "([}}])";
//String s = "([])";
String s = "()";
System.out.println(isValid(s));
}
public static boolean isValid(String s) {
if(s.length()%2 != 0) return false;
System.out.println(s);
Stack<Character> stack = new Stack<>();
for(int i=0; i<s.length();i++) {
char c = s.charAt(i);
if(map.containsKey(c)) {
stack.push(map.get(c));
} else if(map.containsValue(c)) {
if(stack.isEmpty() || stack.peek() != c ) {
return false;
} else if(!stack.isEmpty() || stack.pop() == c) {return false;}
}
}
return stack.isEmpty();
}