leetcode:Next Permutation + Lon…

来源:互联网 发布:睡了兄弟的女朋友知乎 编辑:程序博客网 时间:2024/05/16 11:53
Next Permutation:
题意是,给定一个字符串,如4123,求出在字典序排列组合下大于它的下一个字符串,上例的答案是4132,4312虽然也大于,但在排列组合中不是紧邻4123的,因此不行。

思路是升序降序
从后往前找,如果一直是升序,说明这个字符串就是字典序下最大的了,没有更大的,按照题目要求,就返回字符序最小的,如输入4321(最大字典序),那么返回1234。
如果遍历过程中,找到第一个非递增的i,num[i]再把i位置后面的字符串倒置,就能得到刚好大于原字符串的最小字符串,这样的原理是:
假如有字符串cedba,a

Longest Valid Parentheses:
这个是之前括号匹配问题的扩展,给定一个括号字符串如"(()()))(",求出它最长的有效子串。
思路还是用栈,左括号入栈,重点是在处理右括号。
1、如果检测到右括号时栈为空,那么直接检查下一个元素,并把start位移到下一个元素。
2、如果栈刚好有一个元素,那么说明从start到该位置所有括号匹配完毕,检查这个长度是否大于当前最长值。
3、如果栈有不止一个元素,那么说明,从倒数第二个元素的下一个位置到当前位置,所有括号匹配完毕,也可以求得当前的最大匹配长度。
阅读全文
0 0
原创粉丝点击