京东前端 括号序列

合法的括号匹配序列被定义为:
1. 空串""是合法的括号序列
2. 如果"X"和"Y"是合法的序列,那么"XY"也是一个合法的括号序列
3. 如果"X"是一个合法的序列,那么"(X)"也是一个合法的括号序列
4. 每个合法的括号序列都可以由上面的规则生成
例如"", "()", "()()()", "(()())", "(((())))"都是合法的。 东东现在有一个合法的括号序列s,一次移除操作分为两步:
1. 移除序列s中第一个左括号
2. 移除序列s中任意一个右括号.保证操作之后s还是一个合法的括号序列
东东现在想知道使用上述的移除操作有多少种方案可以把序列s变为空
如果两个方案中有一次移除操作移除的是不同的右括号就认为是不同的方案。
例如: s = "()()()()()",输出1, 因为每次都只能选择被移除的左括号所相邻的右括号.
s = "(((())))",输出24, 第一次有4种情况, 第二次有3种情况, ... ,依次类推, 4 * 3 * 2 * 1 = 24

输入描述:

输入包括一行,一个合法的括号序列s,序列长度length(2 ≤ length ≤ 20).

输出描述:

输出一个整数,表示方案数
示例1

输入

(((())))

输出

24





请问大佬有比较简单易懂的思路吗
蒙蔽了真的

全部评论
int main() { char arr[21]; scanf("%s", &arr); int n = strlen(arr); int result = 1; int t = 0; for (int i = 0; i < n; i++) { if (arr[i] == '(') { t++; result *= t; } else { t--; } } printf("%d\n", result); return 0; }
点赞
送花
回复
分享
发布于 2017-09-08 21:04
while(line=readline()){     var lines=line.trim();     var arr=lines.split('');     var arr1=[];     var sum=1;     var deep=0;     for(var i=0;i<arr.length;i++){     if(arr[i]=='('){    arr1.push(arr[i]);     deep++; }   if(arr[i]==')'){ arr1.pop();   sum=sum*deep; deep--; } }             print(sum); }
点赞
送花
回复
分享
发布于 2017-09-08 21:11
蔚来
校招火热招聘中
官网直投
都好厉害啊 这个不会 前面购物车那个怎么做
点赞
送花
回复
分享
发布于 2017-09-08 21:06
逆向思维,从最右边一个左括号开始考虑
点赞
送花
回复
分享
发布于 2017-09-08 21:06
我的思路是,找右括号数-1=做括号数为临届,循环了n/2次。自己试了几个对了,但是没提交因为时间到了。但估计时间复杂度也超了
点赞
送花
回复
分享
发布于 2017-09-08 22:05
代码楼上已经贴出来,这里说一下自己的理解。 看左边括号的数量,也就是t的值,则后面序列的每一个右括号可以匹配t个已经遍历到的左括号,也就是t种方案。 依此类推~
点赞
送花
回复
分享
发布于 2017-09-09 10:37
天,我投的测试岗也有这题,当时越急越想不出来- -
点赞
送花
回复
分享
发布于 2017-09-09 10:44
import java.util.Scanner;//昨天晚上40%今天想了想 改进了下 没机会试了 public class Main{//括号匹配。。 public static void main(String[] args) { Scanner sc=new Scanner(System.in); String s=sc.nextLine(); char[] ch=s.toCharArray(); int sum=1; int k=0; int count=0; for(int i=0;i<ch.length-1;i++){ if(ch[i]=='('&&ch[i+1]!=')'){ k++; for(int j=i+1;j<ch.length;j++){ if(ch[j]==')') { count++; continue; } else continue; } sum = sum * (count-k+1); count=0; } } System.out.println(sum); } }
点赞
送花
回复
分享
发布于 2017-09-09 10:45

相关推荐

点赞 收藏 评论
分享
正在热议
# 牛客帮帮团来啦!有问必答 #
1151780次浏览 17149人参与
# 通信和硬件还有转码的必要吗 #
11207次浏览 101人参与
# 不去互联网可以去金融科技 #
20417次浏览 256人参与
# 和牛牛一起刷题打卡 #
18994次浏览 1635人参与
# 实习与准备秋招该如何平衡 #
203400次浏览 3627人参与
# 大厂无回复,继续等待还是奔赴小厂 #
4973次浏览 30人参与
# OPPO开奖 #
19206次浏览 267人参与
# 通信硬件薪资爆料 #
265938次浏览 2484人参与
# 国企是理工四大天坑的最好选择吗 #
2227次浏览 34人参与
# 互联网公司评价 #
97701次浏览 1280人参与
# 简历无回复,你会继续海投还是优化再投? #
25037次浏览 354人参与
# 0offer是寒冬太冷还是我太菜 #
454880次浏览 5124人参与
# 国企和大厂硬件兄弟怎么选? #
53909次浏览 1012人参与
# 参加过提前批的机械人,你们还参加秋招么 #
14646次浏览 349人参与
# 硬件人的简历怎么写 #
82288次浏览 852人参与
# 面试被问第一学历差时该怎么回答 #
19398次浏览 213人参与
# 你见过最离谱的招聘要求是什么? #
28119次浏览 248人参与
# 学历对求职的影响 #
161245次浏览 1804人参与
# 你收到了团子的OC了吗 #
538752次浏览 6387人参与
# 你已经投递多少份简历了 #
344243次浏览 4963人参与
# 实习生应该准时下班吗 #
96982次浏览 722人参与
# 听劝,我这个简历该怎么改? #
63525次浏览 622人参与
牛客网
牛客企业服务