2021阿里面试真题:有效的括号字符串
描述
给定一个只包含三种类型字符的字符串:’(’,’)‘和 ‘*’, 编写一个函数来检查该字符串是否有效。 我们通过以下规则定义字符串的有效性:
1.任何左括号 ‘(‘必须有一个相应的右括号’)’。
2.任何右括号 ‘)’ 必须有一个相应的左括号’(’。
3.左括号’(’ 必须在相应的右括号 ‘)’ 之前。
4.*可以被视为单个右括号’)‘或单个左括号’('或空字符串。
5.空字符串也有效。
- 字符串的长度范围为 [1, 100]。
样例1
输入: "()"
输出: true
样例2
输入: "(*)"
输出: true
解释:
'*' 看作是空串.
样例3
输入: "(*))"
输出: true
解释:
'*' 当作'('
解题思路
一道简单的思维题,考虑到星号在其中的用处就能解决. 1. 首先进行最基础的考虑,(在不考虑星号的情况下)我们必定会选择位置最接近的左右括号配对,这样避免了人为造成的右括号前面没有左括号匹配的惨剧。因此我们在写程序进行处理的时候,对于每个右括号判断前面是否有1个左括号能被他拥有,如果左括号数量不足,这个字符串必定是false,或者当整个串被匹配完之后发现有多余的左括号,这个字符串同样是fa

本文介绍了2021年阿里面试中的一道真题,要求检查包含'(',')'和'*'的字符串是否有效。有效字符串需遵循特定规则,包括括号配对和'*'的使用。解题思路是通过维护必须被右括号匹配的左括号数量和组合中的左括号与星号数量,遍历字符串进行匹配。如果在匹配过程中出现不匹配或结束时仍有未配对的左括号,则字符串无效。
最低0.47元/天 解锁文章
1173

被折叠的 条评论
为什么被折叠?



