酷代码 AI
菜单
服务商

题目描述 给定一个只包含英文小括号、英文中括号和英文大括号的字符串s,判断字符串是否有效。 有效字符串需满足: 左括号必须用相同类型的右括号闭合。 左括号必须以正确的顺序闭合,即按照对应方式闭合。 例如: ''()'' 、''[{}]()"是有效字符串。 "())"、")("、''([)]''是无效字符串。 输入描述 第一行,一个正整数n 接下来n行:每行一个字符串 输出描述 共n行,每行输出:true或者false。 true表示字符串有效,false表示字符串无效。

以下是使用Python实现的代码: ```python n = int(input()) for _ in range(n): s = input() stack = [] mapping = {')': '(', ']': '[', '}': '{'} is_valid = True for char in s: if char in '([{': stack.append(char) elif char in ')]}': if not stack or stack.pop() != mapping[char]: is_valid = False break if stack: is_valid = False print("true" if is_valid else "false") ``` 代码解释: 1. 读取输入:首先读取一个正整数`n`,它表示接下来要处理的字符串的数量。然后使用`for`循环读取`n`次输入的字符串。 2. 初始化栈和映射:对于每个输入的字符串,初始化一个空栈`stack`,用于辅助判断括号是否匹配。同时创建一个字典`mapping`,将右括号映射到对应的左括号,方便后续判断。 3. 遍历字符串:对于字符串中的每个字符,如果是左括号(`(`, `[`, `{`),将其压入栈中;如果是右括号(`)`, `]`, `}`),检查栈是否为空或者栈顶元素是否与该右括号对应的左括号匹配。如果不匹配,将`is_valid`标记为`False`并跳出循环。 4. 检查栈是否为空:遍历完字符串后,如果栈不为空,说明有左括号没有被匹配,将`is_valid`标记为`False`。 5. 输出结果:根据`is_valid`的值输出`true`或`false`。 [2026-02-07 20:34:33 | AI问答 | 388点数解答]

相关提问
发财导航,免费问AI
实用工具查看更多