我仍然未通过
测试"negative_match: invalid structures,"
; "simple_grouped: simple grouped positive and negative test, length=22"
; "large1 simple large positive test, 100K ('s followed by 100K )'s + )("
;和"large2 simple large negative test, 10K+1 ('s followed by 10K )'s + )( + ()"
。 任何人都可以看到我的错误是什么吗?我写的代码适用于我测试过的所有字符串......
以下是对任务的描述:
由
S
字符组成的字符串N
被认为是正确的 如果满足以下任一条件,则嵌套:
S
是空的;S
的格式为"(U)"
或"[U]"
或"{U}"
,其中U
是一个正确嵌套的字符串;S
的格式为"VW"
,其中V
和W
是正确嵌套的字符串。例如,字符串
"{[()()]}"
已正确嵌套但"([)()]"
为。{1}} 不写一个函数:
def solution(S)
给定字符串
S
由N
个字符组成,如果1
已正确嵌套,则返回S
0
除此以外。例如,给定S = "{[()()]}"
,函数应该 返回1
并且给定S = "([)()]"
,该函数应返回0
,如 如上所述。假设:
- 范围内的整数
N
是[0..200,000]
;- 字符串
S
仅包含以下字符:"("
,"{"
,"["
,"]"
,"}"
和/或{{ 1}}。复杂性:预期的最坏情况时间复杂度为
")"
;预期 最坏情况下的空间复杂度为O(N)
(不计算所需的存储空间 输入参数)。
这是我的解决方案:
O(N)
答案 0 :(得分:2)
您正在寻找从左到右和从右到左 - 这将在([]{})
失败 - 即使它有效,因为您会比较{{ 1}}与[
。 (}
和start = 1
)
作为口头描述,我会做以下事情:
示例:给定的字符串为end = 4
。
{([])]
for i in range(0, length):
,[
,{
将预期的结束括号放在期望字符串的末尾。即(
,]
或}
这将处理给定的字符串,如下所示:
)
编辑:由于预期的"存储复杂性"同样是i | found value | e-string before| e-string after | remark
0 | { | | } | added }
1 | ( | } | }) | added )
2 | [ | }) | })] | added ]
3 | ] | })] | }) | last element was ] -> removed
4 | ) | }) | } | last element was ) -> removed
5 | ] | } | } | found ] but expected } -> invalid.
(不计算输入参数)你会遇到Oh(n)
的存储复杂性,当给定的字符串有Oh(n)
左括号时没问题。但是你。应该使用第二个n
然后,因为列表有开销。
对于运行时复杂性:
string
(表示常量)Oh(1)
语句是原子的 - > if()
(表示常量)Oh(1)
(表示常量)Oh(1)
(取决于n )总结一下,你得到Oh(n)
。
如果您想在Python中实现此功能,可以使用http://dog-net.org/string.php来验证您的步骤"。 :-)
ps。:我没有故意提供复制和粘贴解决方案! :P