华为机试 - 最大括号深度
创始人
2024-02-12 03:23:21
0

目录

题目描述

输入描述

输出描述

用例

题目解析

算法源码


题目描述

现有一字符串仅由 ‘(‘,’)’,'{‘,’}’,'[‘,’]’六种括号组成。

若字符串满足以下条件之一,则为无效字符串:

①任一类型的左右括号数量不相等;

②存在未按正确顺序(先左后右)闭合的括号。

输出括号的最大嵌套深度,若字符串无效则输出0。

0≤字符串长度≤100000

输入描述

一个只包括 ‘(‘,’)’,'{‘,’}’,'[‘,’]’的字符串

输出描述

一个整数,最大的括号深度

用例

输入[]
输出1
说明有效字符串,最大嵌套深度为1
输入([]{()})
输出3
说明有效字符串,最大嵌套深度为3
输入(]
输出0
说明无效字符串,有两种类型的左右括号数量不相等
输入([)]
输出0
说明无效字符串,存在未按正确顺序闭合的括号
输入)(
输出0
说明无效字符串,存在未按正确顺序闭合的括号。

题目解析

本题可以通过栈结构来判断括号的对称性。

本题的难点在于最大深度计算,其实也不难,就是看是否形成了连续出栈

 代码实现就是看入栈的一直是')',']','}' ,则意味着必然要出栈一对括号,则深度一直自增,如果入栈的是'(','[','{' ,则意味着入栈元素不会和栈顶元素形成一队括号,也就不会出栈,此时深度重置为0

算法源码

/* JavaScript Node ACM模式 控制台输入获取 */
const readline = require("readline");const rl = readline.createInterface({input: process.stdin,output: process.stdout,
});rl.on("line", (line) => {console.log(getMaxDepth(line));
});function getMaxDepth(str) {const map = {")": "(","]": "[","}": "{",};const stack = [str[0]];let maxDepth = 0;let depth = 0;for (let i = 1; i < str.length; i++) {let c = str[i];if (map[c] === stack.at(-1)) {stack.pop();depth++;maxDepth = Math.max(maxDepth, depth);} else {depth = 0;stack.push(c);}}if (stack.length) return 0;return maxDepth;
}

相关内容

热门资讯

喜欢穿一身黑的男生性格(喜欢穿... 今天百科达人给各位分享喜欢穿一身黑的男生性格的知识,其中也会对喜欢穿一身黑衣服的男人人好相处吗进行解...
发春是什么意思(思春和发春是什... 本篇文章极速百科给大家谈谈发春是什么意思,以及思春和发春是什么意思对应的知识点,希望对各位有所帮助,...
网络用语zl是什么意思(zl是... 今天给各位分享网络用语zl是什么意思的知识,其中也会对zl是啥意思是什么网络用语进行解释,如果能碰巧...
为什么酷狗音乐自己唱的歌不能下... 本篇文章极速百科小编给大家谈谈为什么酷狗音乐自己唱的歌不能下载到本地?,以及为什么酷狗下载的歌曲不是...
华为下载未安装的文件去哪找(华... 今天百科达人给各位分享华为下载未安装的文件去哪找的知识,其中也会对华为下载未安装的文件去哪找到进行解...
家里可以做假山养金鱼吗(假山能... 今天百科达人给各位分享家里可以做假山养金鱼吗的知识,其中也会对假山能放鱼缸里吗进行解释,如果能碰巧解...
四分五裂是什么生肖什么动物(四... 本篇文章极速百科小编给大家谈谈四分五裂是什么生肖什么动物,以及四分五裂打一生肖是什么对应的知识点,希...
怎么往应用助手里添加应用(应用... 今天百科达人给各位分享怎么往应用助手里添加应用的知识,其中也会对应用助手怎么添加微信进行解释,如果能...
客厅放八骏马摆件可以吗(家里摆... 今天给各位分享客厅放八骏马摆件可以吗的知识,其中也会对家里摆八骏马摆件好吗进行解释,如果能碰巧解决你...
美团联名卡审核成功待激活(美团... 今天百科达人给各位分享美团联名卡审核成功待激活的知识,其中也会对美团联名卡审核未通过进行解释,如果能...