括号
首先这个序列中我们需要添加的是左括号和右括号
首先这个序列中我们需要添加的是左括号和右括号, 那么显然的我们要想左括号和右括号的添加是不是相互独立的呢?答案是肯定的: 考虑到我们只能在空隙中插入括号, 如果我们添加的一对左右括号不是在同一个空隙中, 那么他们显然是互不干扰的;如果是添加在同一个空隙中, 那么他们的添加顺序是唯一的, 只能是)(, 因为如果是()的话, 那我们本次的添加就是无效的, 不满足添加最少的括号使得序列得到匹配。 由此可得, 我们只需要单独计算出添加左括号的方案数, 乘上单独添加右括号的方案数就是答案的数量。 明确了上面那个问题,我们就可以对左右括号进行单独计算了, 我们这里以添加左括号为例
括号匹配问题,显然应该用堆栈,on 时间复杂度,两次遍历
括号匹配问题,显然应该用堆栈,O(n) 时间复杂度,两次遍历。 第一次遍历字符串以构造堆栈,其内的值都是无法匹配的括号的序号; 第二次遍历堆栈,计算其内序号的最大间隔。 最后还要注意我们需要用字符串的长度和堆栈中保存的最后一个序号计算一次间隔
估计很多朋友都感觉比较难以接受
估计很多朋友都感觉比较难以接受。特变逻辑运算符”[]”使用时候,必须保证运算符与算数 之间有空格。 四则运算也只能借助:letexpr等命令完成
