栈练习之Example005-检查一个程序中的花括号、方括号和圆括号是否配对
                                                            生活随笔
收集整理的這篇文章主要介紹了
                                栈练习之Example005-检查一个程序中的花括号、方括号和圆括号是否配对
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.                        
                                Example005
題目
試編寫一個算法,檢查一個程序中的花括號、方括號和圓括號是否配對,若全部配對,則返回1,否則返回0。對于程序中出現(xiàn)的一對單引號或雙引號內的字符不進行括號配對檢查。39為單引號的ASCII 值,34為雙引號的ASCII值,單引號和雙引號如果出現(xiàn)則必成對出現(xiàn)。
分析
在算法中,掃描程序中的每一個字符,當掃描到每個左花括號(即 {)、左方括號(即 [)、左圓括號(即 ()字符時,令其進棧;當掃描到右花括號(即 })、右方括號(即 ])、右圓括號(即 ))時,則檢查棧頂是否為相應的左括號,若是則做退棧處理,若不是則表明出現(xiàn)了語法錯誤,返回0。當掃描到程序文件結尾后,若棧為空,則表明沒有發(fā)現(xiàn)括號配對錯誤,返回1;否則表明棧中還有未配對的括號,返回0。另外,對于一對單引號或雙引號內的字符不進行括號配對檢查。
這個題之前也做過一次,可參考:考研數(shù)據(jù)結構之棧(2.5)——練習題之編寫一個算法,檢查一個程序中的花括號、方括號和圓括號是否配對(C表示)
圖解
以 a[c'ab[]}',{[(3[sdfe])345]aa}]'' 為例,執(zhí)行步驟如下所示:
- (1)掃描到的字符是 a,不是括號字符,也非引號字符,所以繼續(xù)判斷下一個字符。
- (2)掃描到的字符是 [,是左方括號,所以將其入棧。繼續(xù)判斷下一個字符。此時棧如下圖所示:
- (3)此時掃描到的字符是 c,不是括號字符,也非引號字符,所以繼續(xù)判斷下一個字符。
- (4)掃描到的字符是 ',是單引號字符。因為題目中明確表示引號是成對出現(xiàn)的,所以跳過這對單引號及單引號之內的內容。所以跳過 'ab[]}' 所有字符,即使引號之內有括號字符,也要跳過。
- (5)此時掃描到的字符是 ,,不是括號字符,也非引號字符,所以繼續(xù)判斷下一個字符。
- (6)此時掃描到的字符是 {,是左花括號字符,所以入棧。繼續(xù)判斷下一個字符。
- (7)此時掃描到的字符是 [,是左方括號字符,所以入棧。繼續(xù)判斷下一個字符。
- (8)此時掃描到的字符是 (,是左圓括號字符,所以入棧。繼續(xù)判斷下一個字符。此時棧如下圖所示:
- (9)此時掃描的字符是 3,不是括號字符,也非引號字符,所以繼續(xù)判斷下一個字符。
- (10)此時掃描到的字符是 [,是左方括號字符,所以入棧。然后繼續(xù)判斷下一個字符。此時棧如下圖所示:
- (11)此時掃描到的字符是 s,不是括號字符,也非引號字符,所以繼續(xù)判斷下一個字符。
- (12)此時掃描到的字符是 d,不是括號字符,也非引號字符,所以繼續(xù)判斷下一個字符。
- (13)此時掃描到的字符是 f,不是括號字符,也非引號字符,所以繼續(xù)判斷下一個字符。
- (14)此時掃描到的字符是 e,不是括號字符,也非引號字符,所以繼續(xù)判斷下一個字符。
- (15)此時掃描到的字符是 ],將棧頂字符與當前掃描到的字符進行,正好棧頂字符是左方括號 [,與右方括號字符 ] 是一對,所以將棧頂元素出棧。然后繼續(xù)判斷下一個字符。此時棧如下圖所示:
- (16)此時掃描到的字符是 ),是右圓括號字符,將棧頂字符與當前掃描到的字符進行,正好棧頂字符是左圓括號 (,與右圓括號字符 ) 是一對,所以將棧頂元素出棧。然后繼續(xù)判斷下一個字符。此時棧如下圖所示:
- (17)此時掃描到的字符是 3,不是括號字符,也非引號字符,所以繼續(xù)判斷下一個字符。
- (18)此時掃描到的字符是 4,不是括號字符,也非引號字符,所以繼續(xù)判斷下一個字符。
- (19)此時掃描到的字符是 5,不是括號字符,也非引號字符,所以繼續(xù)判斷下一個字符。
- (20)此時掃描到的字符是 ],將棧頂字符與當前掃描到的字符進行,正好棧頂字符是左方括號 [,與右方括號字符 ] 是一對,所以將棧頂元素出棧。然后繼續(xù)判斷下一個字符。此時棧如下圖所示:
- (21)此時掃描到的字符是 a,不是括號字符,也非引號字符,所以繼續(xù)判斷下一個字符。
- (22)此時掃描到的字符是 a,不是括號字符,也非引號字符,所以繼續(xù)判斷下一個字符。
- (23)此時掃描到的字符是 },將棧頂字符與當前掃描到的字符進行,正好棧頂字符是左花方括號 {,與右花括號字符 } 是一對,所以將棧頂元素出棧。然后繼續(xù)判斷下一個字符。此時棧如下圖所示:
- (24)此時掃描到的字符是 ],將棧頂字符與當前掃描到的字符進行,正好棧頂字符是左方括號 [,與右方括號字符 ] 是一對,所以將棧頂元素出棧。然后繼續(xù)判斷下一個字符。此時棧如下圖所示:
- (25)掃描到的字符是 ',是單引號字符。因為題目中明確表示引號是成對出現(xiàn)的,所以跳過這對單引號及單引號之內的內容。所以跳過 '' 所有字符,包括引號字符本身也要跳過。
- (26)掃描完成,判斷如果棧空則表示序列中所有括號配對成功,則返回 1 表示成功。如果棧非空,則表示括號配對失敗。
C實現(xiàn)
核心代碼:
/*** 判斷字符數(shù)組中的括號是否配對* @param arr 字符數(shù)組* @param n 數(shù)組長度* @return 如果所有括號配對成功則返回 1,否則返回 0 表示不匹配*/ int isMatch(char arr[], int n) {// 聲明棧并初始化,作為輔助解題數(shù)據(jù)結構使用SeqStack stack;init(&stack);// 變量,存放棧頂元素char top;// 變量,記錄字符數(shù)組下標int i = 0;// 循環(huán)遍歷包含括號的字符數(shù)組中的每個字符while (i < n) {// 為什么要用 ASCII 碼值,因為不可能用一對單引號來引一個單引號字符,所以用數(shù)字來進行比較判斷當前字符是否是單引號字符// 如果當前字符是單引號,則跳過一對單引號之后的所有字符,包括單引號本身if (arr[i] == 39) {// 跳過這對單引號中的第一個單引號i++;// 跳過單引號內的所有字符while (arr[i] != 39) {i++;}// 跳過這對單引號中的最后一個單引號i++;}// 如果當前字符是雙引號,則跳過一對雙引號之后的所有字符,包括雙引號本身else if (arr[i] == 34) {// 跳過這對雙引號中的第一個單引號i++;// 跳過雙引號內的所有字符while (arr[i] != 34) {i++;}// 跳過這對雙引號中的最后一個雙引號i++;}// 如果是括號中的任何一個左括號else if (arr[i] == '(' || arr[i] == '[' || arr[i] == '{') {// 將其存入棧中push(&stack, arr[i]);// 然后繼續(xù)比較下一個字符i++;}// 如果是右圓括號else if (arr[i] == ')') {// 獲取棧頂元素getTop(stack, &top);// 如果棧頂元素是左圓括號,則正好配對 ()if (top == '(') {// 則將棧頂元素出棧pop(&stack, &top);} else {// 如果不是則一定不配對,那么整個程序也配對失敗,返回 0return 0;}// 如果圓括號配對成功則繼續(xù)比較下一個字符i++;}// 如果是右方括號else if (arr[i] == ']') {// 獲取棧頂元素getTop(stack, &top);// 如果棧頂元素是左方括號,則正好配對 []if (top == '[') {// 則將棧頂元素出棧pop(&stack, &top);} else {// 如果不是則一定不配對,那么整個程序也配對失敗,返回 0return 0;}// 如果方括號配對成功則繼續(xù)比較下一個字符i++;}// 如果是右花括號else if (arr[i] == '}') {// 獲取棧頂元素getTop(stack, &top);// 如果棧頂元素是花括號,則正好配對 {}if (top == '{') {// 則將棧頂元素出棧pop(&stack, &top);} else {// 如果不是則一定不配對,那么整個程序也配對失敗,返回 0return 0;}// 如果花括號配對成功則繼續(xù)比較下一個字符i++;}// 如果是其他字符,則跳過繼續(xù)比較判斷下一個字符else {i++;}}// 循環(huán)結束后,如果棧為空則表示所有括號配對成功;如果棧非空,則棧中一定還有左括號,那么配對失敗if (isEmpty(stack)) {return 1;} else {return 0;} }完整代碼:
#include <stdio.h>/*** 順序棧最大存儲的元素個數(shù)*/ #define MAXSIZE 100/*** 順序棧結構體定義*/ typedef struct {/*** 數(shù)據(jù)域,數(shù)組,用來存儲棧中元素*/char data[MAXSIZE];/*** 指針域,表示棧頂指針,實際上就是數(shù)組下標*/int top; } SeqStack;/*** 初始化順序棧,即將棧頂指針指向 -1 表示空棧* @param stack 順序棧*/ void init(SeqStack *stack) {// 設定讓棧頂指針指向 -1 表示為棧空stack->top = -1; }/*** 判斷順序棧是否為空* @param stack 順序棧* @return 如果順序棧為空則返回 1,否則返回 0*/ int isEmpty(SeqStack stack) {// 只需要判斷棧頂指針是否等于 -1 即可,如果是空棧則返回 1,不是空棧則返回 0if (stack.top == -1) {return 1;} else {return 0;} }/*** 將元素入棧* @param stack 順序棧* @param ele 元素值* @return 如果棧滿則返回 0 表示入棧失敗;如果插入成功則返回 1*/ int push(SeqStack *stack, char ele) {// 1.參數(shù)校驗,如果棧滿則不能入棧元素if (stack->top == MAXSIZE - 1) {// 如果棧滿,則返回 0,表示不能入棧return 0;}// 2.先將棧頂指針加一,指向新空數(shù)組位置stack->top++;// 3.將新元素值填充到新位置中stack->data[stack->top] = ele;return 1; }/*** 將元素出棧* @param stack 順序棧* @param ele 用來保存出棧的元素* @return 如果棧空則返回 0 表示出棧失敗;否則返回 1 表示出棧成功*/ int pop(SeqStack *stack, char *ele) {// 1.參數(shù)校驗,棧空不能出棧if (stack->top == -1) {// 棧空,沒有元素可出棧return 0;}// 2.用 ele 來保存順序棧棧頂元素*ele = stack->data[stack->top];// 3.然后棧頂指針減一,表示出棧一個元素stack->top--;return 1; }/*** 獲取棧頂元素,但不出棧* @param stack 順序棧* @param ele 用來保存出棧元素* @return 如果棧空則返回 0 表示出棧失敗;否則返回 1 表示出棧成功*/ int getTop(SeqStack stack, char *ele) {// 1.參數(shù)校驗,如果棧空則不能出棧if (stack.top == -1) {// 棧空,沒有元素可出棧return 0;}// 2.保存棧頂元素返回*ele = stack.data[stack.top];return 1; }/*** 判斷字符數(shù)組中的括號是否配對* @param arr 字符數(shù)組* @param n 數(shù)組長度* @return 如果所有括號配對成功則返回 1,否則返回 0 表示不匹配*/ int isMatch(char arr[], int n) {// 聲明棧并初始化,作為輔助解題數(shù)據(jù)結構使用SeqStack stack;init(&stack);// 變量,存放棧頂元素char top;// 變量,記錄字符數(shù)組下標int i = 0;// 循環(huán)遍歷包含括號的字符數(shù)組中的每個字符while (i < n) {// 為什么要用 ASCII 碼值,因為不可能用一對單引號來引一個單引號字符,所以用數(shù)字來進行比較判斷當前字符是否是單引號字符// 如果當前字符是單引號,則跳過一對單引號之后的所有字符,包括單引號本身if (arr[i] == 39) {// 跳過這對單引號中的第一個單引號i++;// 跳過單引號內的所有字符while (arr[i] != 39) {i++;}// 跳過這對單引號中的最后一個單引號i++;}// 如果當前字符是雙引號,則跳過一對雙引號之后的所有字符,包括雙引號本身else if (arr[i] == 34) {// 跳過這對雙引號中的第一個單引號i++;// 跳過雙引號內的所有字符while (arr[i] != 34) {i++;}// 跳過這對雙引號中的最后一個雙引號i++;}// 如果是括號中的任何一個左括號else if (arr[i] == '(' || arr[i] == '[' || arr[i] == '{') {// 將其存入棧中push(&stack, arr[i]);// 然后繼續(xù)比較下一個字符i++;}// 如果是右圓括號else if (arr[i] == ')') {// 獲取棧頂元素getTop(stack, &top);// 如果棧頂元素是左圓括號,則正好配對 ()if (top == '(') {// 則將棧頂元素出棧pop(&stack, &top);} else {// 如果不是則一定不配對,那么整個程序也配對失敗,返回 0return 0;}// 如果圓括號配對成功則繼續(xù)比較下一個字符i++;}// 如果是右方括號else if (arr[i] == ']') {// 獲取棧頂元素getTop(stack, &top);// 如果棧頂元素是左方括號,則正好配對 []if (top == '[') {// 則將棧頂元素出棧pop(&stack, &top);} else {// 如果不是則一定不配對,那么整個程序也配對失敗,返回 0return 0;}// 如果方括號配對成功則繼續(xù)比較下一個字符i++;}// 如果是右花括號else if (arr[i] == '}') {// 獲取棧頂元素getTop(stack, &top);// 如果棧頂元素是花括號,則正好配對 {}if (top == '{') {// 則將棧頂元素出棧pop(&stack, &top);} else {// 如果不是則一定不配對,那么整個程序也配對失敗,返回 0return 0;}// 如果花括號配對成功則繼續(xù)比較下一個字符i++;}// 如果是其他字符,則跳過繼續(xù)比較判斷下一個字符else {i++;}}// 循環(huán)結束后,如果棧為空則表示所有括號配對成功;如果棧非空,則棧中一定還有左括號,那么配對失敗if (isEmpty(stack)) {return 1;} else {return 0;} }int main() {char arr[] = "a[c'ab[]}',{[(3[sdfe])345]aa}]''";int n = 32;int match;match = isMatch(arr, n);printf("%s 中括號是否配對:%d", arr, match); }執(zhí)行結果:
a[c'ab[]}',{[(3[sdfe])345]aa}]'' 中括號是否配對:1Java實現(xiàn)
核心代碼:
/*** 判斷指定字符序列中的括號是否配對成功** @param arr 字符序列* @return 如果配對成功則返回 1,否則返回 0 表示失敗* @throws Exception 如果棧滿再入棧則拋出異常*/public static int isMatch(char[] arr) throws Exception {// 聲明棧并初始化,作為輔助解題數(shù)據(jù)結構使用SeqStack stack = new SeqStack();stack.init();// 變量,存放棧頂元素char top;// 變量,記錄字符數(shù)組下標int i = 0;// 變量,即數(shù)組長度int n = arr.length;// 循環(huán)遍歷包含括號的字符數(shù)組中的每個字符while (i < n) {// 為什么要用 ASCII 碼值,因為不可能用一對單引號來引一個單引號字符,所以用數(shù)字來進行比較判斷當前字符是否是單引號字符// 如果當前字符是單引號,則跳過一對單引號之后的所有字符,包括單引號本身if (arr[i] == 39) {// 跳過這對單引號中的第一個單引號i++;// 跳過單引號內的所有字符while (arr[i] != 39) {i++;}// 跳過這對單引號中的最后一個單引號i++;}// 如果當前字符是雙引號,則跳過一對雙引號之后的所有字符,包括雙引號本身else if (arr[i] == 34) {// 跳過這對雙引號中的第一個單引號i++;// 跳過雙引號內的所有字符while (arr[i] != 34) {i++;}// 跳過這對雙引號中的最后一個雙引號i++;}// 如果是括號中的任何一個左括號else if (arr[i] == '(' || arr[i] == '[' || arr[i] == '{') {// 將其存入棧中stack.push(arr[i]);// 然后繼續(xù)比較下一個字符i++;}// 如果是右圓括號else if (arr[i] == ')') {// 獲取棧頂元素top = stack.getTop();// 如果棧頂元素是左圓括號,則正好配對 ()if (top == '(') {// 則將棧頂元素出棧stack.pop();} else {// 如果不是則一定不配對,那么整個程序也配對失敗,返回 0return 0;}// 如果圓括號配對成功則繼續(xù)比較下一個字符i++;}// 如果是右方括號else if (arr[i] == ']') {// 獲取棧頂元素top = stack.getTop();// 如果棧頂元素是左方括號,則正好配對 []if (top == '[') {// 則將棧頂元素出棧stack.pop();} else {// 如果不是則一定不配對,那么整個程序也配對失敗,返回 0return 0;}// 如果方括號配對成功則繼續(xù)比較下一個字符i++;}// 如果是右花括號else if (arr[i] == '}') {// 獲取棧頂元素top = stack.getTop();// 如果棧頂元素是花括號,則正好配對 {}if (top == '{') {// 則將棧頂元素出棧stack.pop();} else {// 如果不是則一定不配對,那么整個程序也配對失敗,返回 0return 0;}// 如果花括號配對成功則繼續(xù)比較下一個字符i++;}// 如果是其他字符,則跳過繼續(xù)比較判斷下一個字符else {i++;}}// 循環(huán)結束后,如果棧為空則表示所有括號配對成功;如果棧非空,則棧中一定還有左括號,那么配對失敗if (stack.isEmpty()) {return 1;} else {return 0;}}完整代碼:
public class Test {public static void main(String[] args) throws Exception {String str = "a[c'ab[]}',{[(3[sdfe])345]aa}]''";int result;result = isMatch(str.toCharArray());System.out.println(str + "中括號是否配對:" + result);}/*** 判斷指定字符序列中的括號是否配對成功** @param arr 字符序列* @return 如果配對成功則返回 1,否則返回 0 表示失敗* @throws Exception 如果棧滿再入棧則拋出異常*/public static int isMatch(char[] arr) throws Exception {// 聲明棧并初始化,作為輔助解題數(shù)據(jù)結構使用SeqStack stack = new SeqStack();stack.init();// 變量,存放棧頂元素char top;// 變量,記錄字符數(shù)組下標int i = 0;// 變量,即數(shù)組長度int n = arr.length;// 循環(huán)遍歷包含括號的字符數(shù)組中的每個字符while (i < n) {// 為什么要用 ASCII 碼值,因為不可能用一對單引號來引一個單引號字符,所以用數(shù)字來進行比較判斷當前字符是否是單引號字符// 如果當前字符是單引號,則跳過一對單引號之后的所有字符,包括單引號本身if (arr[i] == 39) {// 跳過這對單引號中的第一個單引號i++;// 跳過單引號內的所有字符while (arr[i] != 39) {i++;}// 跳過這對單引號中的最后一個單引號i++;}// 如果當前字符是雙引號,則跳過一對雙引號之后的所有字符,包括雙引號本身else if (arr[i] == 34) {// 跳過這對雙引號中的第一個單引號i++;// 跳過雙引號內的所有字符while (arr[i] != 34) {i++;}// 跳過這對雙引號中的最后一個雙引號i++;}// 如果是括號中的任何一個左括號else if (arr[i] == '(' || arr[i] == '[' || arr[i] == '{') {// 將其存入棧中stack.push(arr[i]);// 然后繼續(xù)比較下一個字符i++;}// 如果是右圓括號else if (arr[i] == ')') {// 獲取棧頂元素top = stack.getTop();// 如果棧頂元素是左圓括號,則正好配對 ()if (top == '(') {// 則將棧頂元素出棧stack.pop();} else {// 如果不是則一定不配對,那么整個程序也配對失敗,返回 0return 0;}// 如果圓括號配對成功則繼續(xù)比較下一個字符i++;}// 如果是右方括號else if (arr[i] == ']') {// 獲取棧頂元素top = stack.getTop();// 如果棧頂元素是左方括號,則正好配對 []if (top == '[') {// 則將棧頂元素出棧stack.pop();} else {// 如果不是則一定不配對,那么整個程序也配對失敗,返回 0return 0;}// 如果方括號配對成功則繼續(xù)比較下一個字符i++;}// 如果是右花括號else if (arr[i] == '}') {// 獲取棧頂元素top = stack.getTop();// 如果棧頂元素是花括號,則正好配對 {}if (top == '{') {// 則將棧頂元素出棧stack.pop();} else {// 如果不是則一定不配對,那么整個程序也配對失敗,返回 0return 0;}// 如果花括號配對成功則繼續(xù)比較下一個字符i++;}// 如果是其他字符,則跳過繼續(xù)比較判斷下一個字符else {i++;}}// 循環(huán)結束后,如果棧為空則表示所有括號配對成功;如果棧非空,則棧中一定還有左括號,那么配對失敗if (stack.isEmpty()) {return 1;} else {return 0;}} }SeqStack:
public class SeqStack {/*** 常量,順序棧所能容納的最大元素個數(shù)*/private final int MAXSIZE = 100;/*** 聲明一個順序棧*/private Stack stack;/*** 初始化順序棧*/public void init() {// 實例化棧對象stack = new Stack();// 為數(shù)據(jù)域分配空間stack.data = new char[MAXSIZE];// 將順序棧的棧頂指針指向 -1 表示空棧stack.top = -1;}/*** 判斷順序棧是否為空** @return 如果順序棧為空則返回 true,否則返回 false*/public boolean isEmpty() {// 規(guī)定了 -1 表示空棧,所以只需要判斷棧頂指針是否等于 -1 即可return stack.top == -1;}/*** 將指定元素入棧** @param ele 指定元素* @throws Exception 如果棧滿則不能入棧,拋出此異常*/public void push(char ele) throws Exception {// 1.參數(shù)校驗,如果棧滿則不能入棧,拋出異常if (stack.top == MAXSIZE - 1) {// 因為棧頂指針 top 存儲的是數(shù)組下標,所以判斷是否等于 MAXSIZE-1throw new Exception("棧已滿,不能再插入!");}// 2.先棧頂指針加 1,因為原棧頂指針處已經存儲了元素,所以加一指向新的空位置stack.top++;// 3.在新的空位置處插入新元素,即為指定下標的數(shù)組元素賦值stack.data[stack.top] = ele;}/*** 將棧頂元素出棧** @return 棧頂元素* @throws Exception 如果棧空則不能出棧,拋出此異常*/public char pop() throws Exception {// 1.參數(shù)校驗,如果棧空則不能出棧,拋出異常if (stack.top == -1) {// 因為棧空的定義是棧頂指針為 -1,所以如果棧頂指針為 -1 那么就是空棧,就不能出棧元素throw new Exception("棧為空,不能出棧元素!");}// 2.記錄棧頂元素,因為要將該元素返回,即要出棧的元素char result = stack.data[stack.top];// 3.棧頂指針減一,因為原棧頂元素已經出棧了,棧中元素個數(shù)減一stack.top--;return result;}/*** 獲取棧頂元素,但不出棧** @return 棧頂元素* @throws Exception 如果棧空則不能出棧,拋出此異常*/public char getTop() throws Exception {// 1.參數(shù)校驗,如果棧空則不能出棧,拋出異常if (stack.top == -1) {throw new Exception("棧為空,不能獲取棧頂元素!");}// 2.直接返回棧頂元素,但不出棧return stack.data[stack.top];}/*** 順序棧中元素個數(shù)** @return 棧中元素個數(shù)*/public int size() {// top 表示棧頂指針,實際上就是數(shù)組 data 的下標,所以實際元素個數(shù)就是下標加一// 即使是空棧 top=-1,那么最后也會返回 0 表示元素個數(shù)為零個return stack.top + 1;}/*** 打印順序棧中所有元素,從棧頂?shù)綏5?/public void print() {System.out.print("[");for (int i = stack.top; i >= 0; i--) {if (i != stack.top) {System.out.print(", ");}System.out.print(stack.data[i]);}System.out.print("]\n");}/*** 清空順序棧*/public void clear() {// 直接將棧頂指針指向 -1 即可表示空棧,不用重置棧中已有元素的值,因為順序棧操作只跟棧頂指針有關stack.top = -1;} }/*** 棧定義*/ class Stack {/*** 順序棧用來存儲元素的數(shù)組*/char[] data;/*** 記錄順序棧的棧頂指針,即數(shù)組下標*/int top; }執(zhí)行結果:
a[c'ab[]}',{[(3[sdfe])345]aa}]''中括號是否配對:1總結
以上是生活随笔為你收集整理的栈练习之Example005-检查一个程序中的花括号、方括号和圆括号是否配对的全部內容,希望文章能夠幫你解決所遇到的問題。
 
                            
                        - 上一篇: 数学基础修炼手册-数学分析-凸优化
- 下一篇: 数学知识速查手册
