博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
找出最长的有效括号内子括号的长度
阅读量:5291 次
发布时间:2019-06-14

本文共 1258 字,大约阅读时间需要 4 分钟。

CSDN编程挑战里的题目

给定只包含括号字符'('和 ')''的字符串,请找出最长的有效括号内子括号的长度。

举几个例子如下: 例如对于"( ()",最长的有效的括号中的子字符串是"()" ,有效
双括号数1个,故它的长度为 2。 再比如对于字符串") () () )",其中最长的有效
的括号中的子字符串是"() ()",有效双括号数2个,故它的长度为4。 再比如对于
"( () () )",它的长度为6。 换言之,便是有效双括号"()"数的两倍。 给
定函数原型int longestValidParentheses(string s),请完成此函数,实现上述功能。

我提交的程序CSDN反馈是有问题,但又没给说具体的出错测试用例.所以我也没有再进一步调试,感觉我的代码没问题.

1 #include 
2 #include
3 #include
4 5 #include
6 #include
7 #include
8 #include
9 10 int longestValidParentheses(const char* s)11 {12 int len = strlen(s);13 int leftBracket[256];14 memset(leftBracket, 0, sizeof(leftBracket));15 int rst = 0;16 int lastStart = 65535;17 int leftBracketNum = 0;18 for (int i = 0; i < len; i++)19 {20 if (s[i] == '(')21 {22 leftBracket[leftBracketNum] = i;23 leftBracketNum++;24 }25 else if (s[i] == ')')26 {27 if (leftBracketNum)28 {29 leftBracketNum--;30 if (leftBracket[leftBracketNum] < lastStart)31 {32 rst = i - leftBracket[leftBracketNum] + 1;33 lastStart = leftBracket[leftBracketNum];34 }35 else36 {37 rst = i - lastStart + 1;38 }39 }40 else41 {42 lastStart = 65535;43 }44 }45 }46 47 return rst;48 }

 

 

 

 

转载于:https://www.cnblogs.com/WhyEngine/p/3520569.html

你可能感兴趣的文章
Spring面试题
查看>>
窥视SP2010--第一章节--SP2010开发者路线图
查看>>
MVC,MVP 和 MVVM 的图示,区别
查看>>
C语言栈的实现
查看>>
代码为什么需要重构
查看>>
TC SRM 593 DIV1 250
查看>>
SRM 628 DIV2
查看>>
2018-2019-2 20165314『网络对抗技术』Exp5:MSF基础应用
查看>>
统计单词,字符,和行
查看>>
《Akka应用模式:分布式应用程序设计实践指南》读书笔记8
查看>>
jQuery垂直滑动切换焦点图
查看>>
Python-S9-Day127-Scrapy爬虫框架2
查看>>
模运算
查看>>
python多线程的使用
查看>>
团队编程项目作业1-成员简介及分工
查看>>
使用Chrome(PC)调试移动设备上的网页
查看>>
UI基础--手写代码实现汤姆猫动画
查看>>
使用gitbash来链接mysql
查看>>
黑盒测试和百合测试的优缺点对比
查看>>
SecureCRT的使用方法和技巧(详细使用教程)
查看>>