您的目标:给定一串方括号,输出将输入字符串转换为平衡了方括号的字符串所需的最小Damerau-Levenshtein距离。
输入项
输入的字符串将仅包含方括号,并且不包含其他字符。也就是说,它是中任何字符的组合(){}[]<>
。您可以将输入作为字符串或字符数组。您不能对输入字符串做任何其他假设;它可能任意长(最大为您的语言支持的最大大小),它可能为空,方括号可能已经平衡,等等。
Damerau-Levenshtein距离
两个字符串之间的Damerau-Levenshtein距离是两个相邻字符的插入,删除,单字符替换和换位(交换)的最小数量。
输出量
输出应该是输入字符串和括号匹配的字符串之间的最小Damerau-Levenshtein距离。输出应为数字,而不是结果平衡的字符串。
如果左括号和右括号的顺序正确且其中没有字符,则将一对括号视为“匹配”
()
[]{}
或者,如果其中的每个子元素也都匹配。
[()()()()]
{<[]>}
(()())
子元素也可以嵌套几层深。
[(){<><>[()]}<>()]
<[{((()))}]>
(感谢@DJMcMayhem的定义)
测试用例
Input Possible Balanced Output
Empty Empty 0
[](){}<> [](){}<> 0
[(){}<> [(){}<>] 1
[(]) []() 1
[[[[[[[[ [][][][] 4
(](<>}[>(}>><(>(({}] ()(<>)[(<><>){}] 7
>]{])< []{()} 3
([)}}>[ (){}<> 4
{<((<<][{{}>[<) <>(<<[]>{}>[]) 5
{><({((})>}}}{(}} {<><({()})>}{}{()} 4
(](<)>}[>(}>>{]<<(]] (<()<><<>()>>[])<()> 9
}})( {}() 2
(感谢@WheatWizard解决了一半的测试用例)
这是代码高尔夫球,最少字节获胜!
您的提交应该是可测试的,这意味着它应该在不超过一个小时的时间内输出每个测试用例的结果。
[<>]
或[]<>
或<>