数据结构与算法 / 编辑器和编译器如何判定括号是否合法
生活随笔
收集整理的這篇文章主要介紹了
数据结构与算法 / 编辑器和编译器如何判定括号是否合法
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
一、整體思路
使用棧這種數(shù)據(jù)結(jié)構(gòu)。
遍歷字符串,遇到左括號則入棧,遇到右括號則判斷此時的棧頂?shù)睦ㄌ柺欠窈陀依ㄌ枌?#xff0c;如果是則 pop 棧頂;如果不是則直接可以判定該字符串中括號不匹配。
二、栗子
#include <stack> #include <string> #include <iostream>char leftOf(char c);bool isValid(std::string str) {std::stack<char> left;for (char c : str){if (c == '(' || c == '{' || c == '[')left.push(c);else // 字符 c 是右括號if (!left.empty() && leftOf(c) == left.top())left.pop();else// 和最近的左括號不匹配return false;}// 是否所有的左括號都被匹配了return left.empty(); }char leftOf(char c) {if (c == '}')return '{';if (c == ')')return '(';return '['; }void show(const std::string &str) {if (isValid(str))std::cout << "合法" << std::endl;elsestd::cout << "不合法" << std::endl;return; }int main() {show("{()}");show("{()[]])");return 0; } 合法 不合法?
代碼參考:https://zhuanlan.zhihu.com/p/107788052
(SAW:Game Over!)
總結(jié)
以上是生活随笔為你收集整理的数据结构与算法 / 编辑器和编译器如何判定括号是否合法的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: do{...}while(0) 的意义和
- 下一篇: 数据结构与算法 / 默克尔树