一个朋友面试的问题是这样问的:
给定一个由字符 (,),{,},[,] 组成的字符串,判断其格式是否正确。
在我看来,我会回答否,因为它是一个字符串,因此需要“/”字符来打印所述字符。这是正确的还是我离谱?
如果格式正确意味着每个大括号都用匹配的大括号关闭并且没有像 ({)} 这样的事件,那么我建议您使用堆栈
你似乎在问面试问题是什么意思。
答案是这意味着面试官的意思。如果需要,您(或您的朋友)应该要求面试官澄清。(事实上,如果你不要求面试官澄清,你可能会因为不问而“失分”。)
但是,一个合理的解释是,问题是要求被采访者编写一个方法来检查由这些字符组成的 String 是否具有平衡的括号;例如
[]{[]} OK
[ BAD
[(]) BAD
FWIW - “格式良好的字符串”没有一般定义。相反,如果可以使用语法的产生式为字符串构造有效的分析树,则字符串被认为是关于某些语法的格式良好的。
这种情况下的问题是没有提供这样的语法(至少,这里没有)。因此,面试问题(如上所述)是不完整的/模棱两可的/只有在您准备猜测面试官的意思时才能回答。
正确的答案是“格式正确是什么意思?” 模糊的要求应该更具体,这表明您正在寻找正确的功能,而不是快速修复。
我们可以猜测它的含义。这可能意味着元素的正确嵌套,例如左括号和右括号遵循 xml 样式的标记语法,其中
{([)]}
不会很好地形成
它可能意味着正确转义,以便可以在字符被解释为命令的环境中打印。在这种情况下,格式良好可能意味着
\{\(\[
这甚至可能意味着一旦找到一个开始字符,唯一的合法字符就是它的结束字符。在这种情况下,以下内容将不会很好地形成。
{()}
如果格式正确仅意味着每个打开项目的一个结束项目,那么(由于定义)以下甚至可能是可以的
)(
简而言之,当您有疑问时,请询问。问是很多事情的关键,它表明你在关注和思考。这些技能比“知道答案”重要得多,因为在不理解请求的情况下知道答案会导致回答错误的问题。