程式設計練習題:括號配對問題(Java)
阿新 • • 發佈:2018-12-10
問題描述:問題描述 : 輸入一個字串 裡面只含有 [ , ] , ( , ) 四種括號 ; 現要求判斷這個字串 是否滿足括號匹配
如 ([])() 是匹配的 ([)]是不匹配的
public void check(String str) {
Stack<Character> stack = new Stack<Character>();
// 如果該String長度為奇數,不匹配
if (str.length() % 2 == 1) {
System.out.println("No" );
} else {
stack = new Stack<Character>();
for (int i = 0; i < str.length(); i++) {
if (stack.isEmpty()) {
stack.push(str.charAt(i)); // 當前棧是空的 存入當前位置的字元
} else if ((stack.peek() == '[' && str.charAt(i) == ']')
|| (stack.peek() == '(' && str.charAt(i) == ')')) {
stack.pop(); // 滿足上面的條件 表示相鄰的兩個字元是一對匹配的括號 進行出棧操作
} else {
stack.push(str.charAt(i));
}
}
if (stack.isEmpty()) {
System. out.println("Yes");
} else {
System.out.println("No");
}
}
}