3 ms·
A typical interview along these lines will get the candidate to the "single balanced parentheses" solution, then throw in multiple types of parentheses. The wh
by braythwayt 8y ago
A typical interview along these lines will get the candidate to the "single balanced parentheses" solution, then throw in multiple types of parentheses.
The whole script goes sideways if the candidates whips Perl or Ruby or whatever out, and provides a recursive regex.
- a1369209993 8y ago> the candidates whips Perl or Ruby or whatever out My first thought for is_balanced_parens was something like: while _!="" (s'()''g or reject) #* multiple types of parentheses *# while _!="" (s'()''g or s'{}''g or reject)
- spc476 8y agoAre you talking about the interview script, or the programming script? And what if the interviewee brings out Lua and LPEG [1]: local lpeg = require "lpeg" local balance = lpeg.Cmt( lpeg.P { ( (lpeg.P(1) - lpeg.S"()[]{}<>") + lpeg.P"(" * lpeg.V(1) * lpeg.P")" + lpeg.P"{" * lpeg.V(1) * lpeg.P"}" + lpeg.P"[" * lpeg.V(1) * lpeg.P"]" + lpeg.P"<" * lpeg.V(1) * lpeg.P">" )^0 }, function(subject,position,capture) return position,position > #subject end ) print(balance:match "") -- true print(balance:match "()") -- true print(balance:match "((()))") -- true print(balance:match "()()()") -- true print(balance:match "()(())") -- true print(balance:match "(") -- false print(balance:match "(()") -- false print(balance:match "({)}") -- false print(balance:match "({})") -- true print(balance:match "()))((") -- false [1] http://www.inf.puc-rio.br/~roberto/lpeg/lpeg.html http://www.inf.puc-rio.br/~roberto/lpeg/lpeg.html