【发布时间】:2021-07-23 04:56:00
【问题描述】:
你能帮帮我吗?我需要为使用以下两个字母 a 和 b 的单磁带图灵机编写代码。
所以程序应该显示两个词的共同前缀。
例如:g(aab,aaaba) -> aa; g(_,abab) -> _; g(aaba,baa) -> _; g(_,_) -> _; g(babaab,babb) -> bab
其中 g 是机器的功能,下划线表示一个空单词,单词之间有空格
我尝试实现以下选项:
如果在开头我们看到字母 a,那么我们将其删除并移至第二个单词的开头。如果我们还在那里看到一个字母 a,我们也会将其删除,并在两个单词之后通过空格写 a。之后我们回到第一个单词的开头并重复这个操作。当第一个单词的第一个字母和第二个单词的第一个字母不再匹配时,我们会删除剩下的所有内容。
但是我在代码上遇到了一些麻烦,因为每次操作后两个单词之间的空格会变长,我不知道如何控制它。当第一个或第二个单词完全是公共前缀时也会出现问题,例如:g(baa,baabab) -> baa
【问题讨论】: