> 文章列表 > 【华为OD机试真题 C++】1072 - 最大括号深度 | 机试题+算法思路+考点+代码解析

【华为OD机试真题 C++】1072 - 最大括号深度 | 机试题+算法思路+考点+代码解析

【华为OD机试真题 C++】1072 - 最大括号深度 | 机试题+算法思路+考点+代码解析

文章目录

    • 一、题目
      • 🔸题目描述
      • 🔸输入输出
      • 🔸样例1
      • 🔸样例2
      • 🔸样例3
      • 🔸样例4
    • 二、代码参考
  • 作者:KJ.JK

🌈 🌈 🌈 🌈 🌈 🌈 🌈 🌈 🌈 🌈 🌈 🌈 🌈
 
🍂个人博客首页: KJ.JK
 
💖系列专栏:华为OD机试真题(C++)


一、题目


🔸题目描述

现有一字符串仅由’(‘,’)‘,’{‘,’}‘,’[‘,’]'六种括号组成
 
若字符串满足以下条件之一,则为无效字符串:
 
1、任一类型的左右括号数量不相等
 
2、存在未按正确顺序(先左后右)团合的括号
 
输出括号的最大嵌衰深度,若字符串无效则输出0。
0<=字符串长<=100000


🔸输入输出

输入
一个只包括’(‘,’)‘,’{‘,’}‘,’[‘,’]'的字符串
 
输出
一个整数, 最大的括号深度


🔸样例1

输入
([]{()})输出
3说明:
有效字符串,大嵌套深度为3

🔸样例2

输入
(]输出
0说明:
无效字符串,有两种类型的左右括号数量不相等

🔸样例3

输入
([)]输出
0说明:
无效字符串,在末按正确顺闭合的括号

🔸样例4

输入
)(输出
0说明:
无效字符串,存在未按正确顺闭合的括号。

二、代码参考

#include <iostream>
#include <unordered_map>
#include <deque>
using namespace std;int main() {string s;getline(cin, s);unordered_map<char, char> map = {{')', '('}, {']', '['}, {'}', '{'}};deque<char> stack;stack.push_back(s[0]);int maxDepth = 0, depth = 0;for (int i = 1; i < s.size(); i++) {char c = s[i];if (map[c] == stack.back()) {stack.pop_back();depth++;maxDepth = max(maxDepth, depth);} else {depth = 0;stack.push_back(c);}}if (!stack.empty()) {cout << 0 << endl;return 0;}cout << maxDepth << endl;return 0;
}

作者:KJ.JK

文章对你有所帮助的话,欢迎给个赞或者 star,你的支持是对作者最大的鼓励,不足之处可以在评论区多多指正,交流学习