一个结构良好的java字符串

时间:2013-07-17 14:26:41

标签: java string

一位朋友有一个面试问题,询问以下内容:

  

给定一个由字符(,),{,},[,]组成的字符串,确定是否形成良好。

在我看来,我会回答否,因为它是一个字符串,因此需要“/”字符来打印所述字符。这是正确的还是我离开基地?

3 个答案:

答案 0 :(得分:7)

如果格式良好意味着每个支撑都用匹配的支撑关闭,并且没有像({)}这样的事件,那么我建议你使用堆栈

  1. 浏览字符串中的每个字符
  2. 如果是打开支架,将其推到堆叠上
  3. 如果它是关闭括号,从堆栈弹出并查看,如果是匹配 - >如果你通过字符串中的所有字符并且堆栈是空的,那么你的字符串就会很好地形成

答案 1 :(得分:2)

您似乎在询问面试问题的含义。

答案是,这意味着面试官的意思。如果您需要,您(或您的朋友)应该要求面试官澄清。 (事实上​​,如果你没有要求面试官澄清,你可能会“失分”......因为没有问。)

然而,一个合理的解释是,问题是要求受访者编写一种方法来检查由这些字符组成的字符串是否具有平衡括号; e.g。

    []{[]}    OK
    [         BAD
    [(])      BAD

FWIW - “格式良好的字符串”没有一般定义。相反,如果可以使用语法的产生为字符串构造有效的解析树,则字符串被认为是关于某些语法的良好形式。

在这种情况下的问题是没有提供这样的语法(至少,不是这里)。因此,如果您准备猜测面试官的语法是什么,那么面试问题(如上所述)是不完整/含糊/只有回答。

答案 2 :(得分:0)

正确的答案是“你的意思是什么?”模糊的要求应该更具体,这是一个信号,表明你正在寻找正确的功能,而不是快速修复。

我们可以猜测它意味着什么。这可能意味着元素的正确嵌套,使得开括号和右括号遵循xml样式的标记语法,其中

{([)]}

不会很好地形成

它可能意味着正确转义,以便可以在将字符解释为命令的环境中打印。在这种情况下,良好的形式可能意味着

\{\(\[

甚至可能意味着一旦找到一个开头字符,唯一的合法字符就是它的结束字符。在这种情况下,以下情况不会很好。

{()}

如果形成良好只意味着每个开场项目的一个结束项目,那么(由于定义)以下甚至可能是好的

)(

简而言之,当你有疑问时,请问。询问是许多事情的关键,它表明你正在关注和思考。这些技能远比“知道答案”重要,因为在不理解请求的情况下知道答案会导致回答错误的问题。