abccaeeaba
스택에 'a'가 남아있는데 또 다시 'a'가 들어왔다고 해서, 'a'가 지워지지 않는다는 보장은 없습니다.
14번줄에서 list.peek() != s.charAt(i) 이렇다면 19번줄에서 바로 return 0하는 것이 문제인것 같습니다.
다음 for문으로 넘어가야지 return 0해버리면 s의 뒤 문자열을 판단할 수 없습니다.
cnt로 수를 세다보니 ++ --하면서 음수가 되면 return 0하는 부분도 문제인 것 같습니다.
for문을 한 번 돌고 맨 마지막에 if(list.isEmpty()) -> return 1 아니라면 return 0 하면 됩니다.