【发布时间】:2014-07-28 04:09:22
【问题描述】:
我刚刚完成了第一次面试编码测验,我正处于沉浸在 dran-o 浴缸和投资 No Tears 泡泡浴产品以及一堆烤面包机之间。
问题如下:
如果给你一个像"zx(c)abcde[z{x]}" 这样的字符串,编写一个函数,如果语法正确则返回true,如果语法不正确则返回false:例如,在该字符串中,括号和大括号被弄乱了。换句话说,"{hello}mot[o]" 会通过,但"{hello}mo{[t}" 不会。
我的整个过程是这样的:保留一个打开和关闭括号/大括号/括号位置的列表,然后查看是否有重叠。但这不是最佳解决方案,所以我轰炸了它。
我需要一些帮助来了解如何解决这个问题。
提前致谢。
【问题讨论】:
-
您是如何跟踪他们的位置的?这可以归结为您如何评估中缀表达式。当你遇到右括号时,只需将开括号推入堆栈并弹出,最后检查堆栈是否为空
-
@noMAD 你能解释一下这个答案吗?我的脑海里有类似的事情,但我完全僵住了,感觉自己得了动脉瘤
标签: ruby string parsing syntax