迷失的括号序列题解

迷失的括号序列

https://www.nowcoder.com/questionTerminal/e7df3cc4a1534a499dcb1f6553e23799

首先我们需要知道如何去判断一个括号序列是否合法,我们需要括号序列的任何一个前缀中左括号的个数大于等于右括号的个数,并且右括号总个数等于左括号总个数。首先我们要判断是否为偶数,因为奇数左括号右括号个数肯定就不相等了。总长度是,所以左括号个数应为,当然如果当前括号序列里面的左括号个数大于,那么也是不行的。接下来我们就可以计算出还需要补个左括号。为了尽可能满足前缀中左括号个数大于等于右括号个数,那么这个左括号肯定是替换最左边的,因为左括号越早出现在左边对于我们来说是越优的,越不可能出现右括号个数比左括号个数多。最后再判断一下是不是合法的括号序列就OK啦。时间复杂度,空间复杂度

class Solution {
public:
    string MissingBrackets(string brackets) {
        // write code here
        int cnt=0;
        for(int i=0;i<brackets.size();i++) 
            if(brackets[i]=='(') cnt++;
        if(cnt*2>brackets.size()||brackets.size()%2==1) 
            return "Impossible";
        int lef=brackets.size()/2-cnt;
        for(int i=0;i<brackets.size();i++) {
            if(brackets[i]=='?'&&lef) brackets[i]='(',lef--;
            else if(brackets[i]=='?') brackets[i]=')';
        }
        int all=0;
        for(int i=0;i<brackets.size();i++) {
            if(brackets[i]=='(') all++;
            else if(brackets[i]==')') all--;
            if(all<0) return "Impossible";
        }
        return brackets;
    }
};
全部评论

相关推荐

评论
点赞
收藏
分享

创作者周榜

更多
正在热议
更多
# 长得好看会提高面试通过率吗? #
5376次浏览 53人参与
# 百度工作体验 #
316382次浏览 2233人参与
# 米连集团26产品管培生项目 #
7741次浏览 235人参与
# 沪漂/北漂你觉得哪个更苦? #
1877次浏览 45人参与
# 离家近房租贵VS离家远但房租低,怎么选 #
16954次浏览 137人参与
# 春招至今,你的战绩如何? #
16914次浏览 153人参与
# MiniMax求职进展汇总 #
25514次浏览 323人参与
# 你的实习产出是真实的还是包装的? #
3588次浏览 59人参与
# HR最不可信的一句话是__ #
1221次浏览 34人参与
# AI面会问哪些问题? #
1107次浏览 30人参与
# 你做过最难的笔试是哪家公司 #
1447次浏览 24人参与
# AI时代,哪个岗位还有“活路” #
3149次浏览 55人参与
# 不考虑薪资和职业,你最想做什么工作呢? #
153005次浏览 889人参与
# 简历第一个项目做什么 #
32276次浏览 371人参与
# 军工所铁饭碗 vs 互联网高薪资,你会选谁 #
8080次浏览 44人参与
# 简历中的项目经历要怎么写? #
311392次浏览 4289人参与
# XX请雇我工作 #
51168次浏览 171人参与
# 投格力的你,拿到offer了吗? #
178458次浏览 891人参与
# 你最满意的offer薪资是哪家公司? #
77047次浏览 375人参与
# AI时代,哪些岗位最容易被淘汰 #
65091次浏览 921人参与
# 秋招白月光 #
731753次浏览 5441人参与
# 当下环境,你会继续卷互联网,还是看其他行业机会 #
187722次浏览 1123人参与
牛客网
牛客网在线编程
牛客网题解
牛客企业服务