我想解決一個平衡括號的問題,但得到錯誤。我不知道爲什麼我會錯誤地回答,因爲我的邏輯很好。我試圖解決它很長一段時間,但不能得到任何方式。這是我在Java代碼:平衡括號:
public class Solution {
public static void main(String[] args) {
Scanner sc=new Scanner(System.in);
int n=sc.nextInt();
for(int i=0; i<n;i++){
Stack<Character> stack=new Stack<Character>();
char x,y;
for(int j=0; j<stack.size();j++){
x=sc.next().charAt(j);
y=stack.peek();
if(x=='{' || x=='[' || x=='('){
stack.push(x);
}
if(x=='}'){
if(y=='{'){
stack.pop();
// System.out.println("Yes");
}
// else{
// System.out.println("No");
//}
}else if(x==']'){
if(y=='['){
stack.pop();
}
}else if(x==')'){
if(y=='('){
stack.pop();
// System.out.println("Yes");
}
}
}
if(stack.empty()==true){
System.out.println("YES");
}else if(stack.empty()!=true){
System.out.println("NO");
}
}
}
}
錯誤是什麼? –
沒有錯誤。我在幾個測試用例中遇到了錯誤的答案。測試用例:3 {[()]} {[(])} {{[[(())]]}}對於上述測試用例,它應該打印YES NO YES,但打印YES YES YES –
,你的第一句話提到了一個錯誤... –