字串中括號配對檢查(java實現)
阿新 • • 發佈:2018-12-19
題目描述
對於一行程式碼(字串),裡面可能出現大括號“{}”、中括號“[]”和小括號“()”,請程式設計判斷改行程式碼的括號巢狀是否正確。“()”,“({})”,“printf(‘Hello Netease’)”等都是括號使用的正確方法,“(}”,”print(Hello Netease]”則是錯誤的範例。
輸入描述
輸入包含一行,為一行包含括號的字串(字串長度不超過1000)
輸出描述
輸出為Yes或者No
import java.util.*; //檢驗{【】}【】括號匹配 public class Main { public static void main(String[] args) { int flag = 1; String s = "{([])}"; //輸入的字串 int num = s.length(); char[] arr = s.toCharArray(); System.out.println(arr); //列印輸出 // Stack<> stack; Stack<Character> stack = new Stack<Character>(); for (int i = 0; i < num; i++) { if ('{' == arr[i] || '(' == arr[i] || '[' == arr[i]) { stack.push(arr[i]); } else { if (stack.isEmpty()) { flag = 1; } else { if (('}' == arr[i] && stack.pop() == '{') || ')' == arr[i] && stack.pop() == '(' || ']' == arr[i] && stack.pop() == '[') { stack.pop(); } } } } if (flag == 1 && stack.isEmpty()) System.out.println("Yes"); else { System.out.println("NO"); } } }
Output:
{([])} Yes
Stack - 棧 特點是後進先出 ,其中
- push() 將一個物件寫入棧頂
- peek() 方法返回棧頂物件且不將其出棧 (沒用到)
- pop() 返回棧頂物件並將其出棧