【发布时间】:2013-03-15 17:23:20
【问题描述】:
在一次编程面试中,我被问到下一个问题:
编写一个程序,计算输入流中的字数和行数。
假设您有一个具有 nextChar() 方法的阅读器。
乍一看,它看起来很简单。但后来你意识到,你需要处理很多状态,比如:
- 连续的字/行分隔符
- 不同的词尾条件 - 单词分隔符或行分隔符或 EOF
- 以单词分隔符开头的新字符串
- 等
在面试中,我想出了一个带有许多 if-else 和标志的意大利面条代码。
但是我认为对于这类问题应该有一个正式的方法,它可以让你保证你处理了所有可能的情况,并且可以给出一个结构化的解决方案。
我认为这可能来自自动机理论或编译器理论(我以前从未深入研究过这两个领域中的任何一个)。
所以,如果您认识到上述问题中的某种类型的问题,或者您知道哪种理论涵盖了此类问题,请告诉我。
【问题讨论】:
标签: algorithm computer-science compiler-theory automata