我最近遇到了这个有趣的问题。您将获得只包含字符的字符串'(',')','{','}','['和']',例如"[{()}]",你需要写这将检查这些输入字符串的有效性的函数,函数可能是这样的: bool isValid(char* s); 这些支架必须关闭以正确的顺序,例如"()"和"()[]{}"都是有效的,但是"(]","([)]"并且"{{{{"都没有!
'('
')'
'{'
'}'
'['
']'
"[{()}]"
bool isValid(char* s);
"()"
"()[]{}"
"(]"
"([)]"
"{{{{"
我提出了以下O(n)时间和O(n)空间复杂度解决方案,该方法运行良好:
这行得通,但是我们可以针对空间进行优化吗?可能是恒定的额外空间,我理解时间复杂度不能小于O(n),因为我们必须查看每个字符。
所以我的问题是我们可以在O(1)空间解决这个问题吗?
如果您愿意接受单方面的错误,那么有一种算法可以使用n个polylog(n)时间和polylog(n)空间:http : //www.eccc.uni-trier.de/report/2009/119 /