📅  最后修改于: 2023-12-03 14:58:37.873000             🧑  作者: Mango
"门|门模拟"是一个程序员面试准备的项目,旨在通过提供模拟的编程问题,帮助程序员加深对算法和数据结构的理解,提高解决问题的能力。
在这个项目中,我们将介绍"门|门模拟 2017"中的问题7,并提供一个解决方案作为参考。以下是问题的描述和解决方法。
题目7:"门|门模拟 2017"中的问题7要求实现一个算法,用于判断一个字符串是否为有效的括号组合。有效的括号组合包含以下几种类型的括号:
字符串中只包含上述字符,并且满足以下条件:
实现一个函数 isValidParentheses(str: string): boolean
,输入一个字符串 str
,返回一个布尔值,表示该字符串是否为有效的括号组合。
下面是一个简单的解决方案,它使用栈的数据结构来实现括号的匹配。
function isValidParentheses(str) {
const stack = [];
const pairs = {
'(': ')',
'[': ']',
'{': '}',
};
for (let i = 0; i < str.length; i++) {
const char = str[i];
if (pairs[char]) {
stack.push(char);
} else {
const top = stack.pop();
if (char !== pairs[top]) {
return false;
}
}
}
return stack.length === 0;
}
这个函数使用一个栈 stack
来记录遇到的括号,遍历输入字符串。当遇到一个左括号时,将其入栈;当遇到一个右括号时,与栈顶的括号进行匹配。
如果遇到的是左括号,将其入栈。如果遇到的是右括号,取出栈顶的括号,并检查是否与当前右括号匹配。如果不匹配,返回 false
。如果遍历完字符串后,栈为空,说明所有的括号都匹配成功,返回 true
;否则,返回 false
。
"门|门模拟 2017 |问题 7" 是一个字符串括号匹配的问题。我们提供了一个基于栈的简单解决方案。这个方案通过遍历输入字符串,使用栈来进行左右括号匹配,最后判断栈是否为空来确定括号是否有效。这个问题可以帮助程序员加深对栈这种数据结构的理解,并训练解决问题的能力。