【发布时间】:2019-12-29 14:14:20
【问题描述】:
我正在通过链接 here 的 LeetCode 上的问题。
给定一个只包含三种类型字符的字符串:'(', ')' 和 '*',编写一个函数来检查这个字符串是否有效。我们通过以下规则定义字符串的有效性:
- 任何左括号 '(' 必须有一个对应的右括号 ')'。
- 任何右括号 ')' 必须有一个对应的左括号 '('。
- 左括号'('必须放在相应的右括号')'之前。
- '*' 可以被视为单个右括号 ')' 或单个左括号 '(' 或空字符串。
- 空字符串也是有效的。
示例:
输入:“(*))”
输出:真
我已经通过文章中指定的方法,但我无法理解与动态编程相关的方法2。谁能解释我们需要如何通过动态编程来解决这个问题?提前致谢!
主要痛点:
或者,s[i]可以做成'(',并且[i+1,j]中有一些k使得s[k]可以做成')',加上两个区间cut by s[k] (s[i+1: k] and s[k+1: j+1]) 可以有效;
【问题讨论】:
标签: string algorithm dynamic-programming