如何使用无效值的状态机,如“0.10”

时间:2014-03-27 05:48:15

标签: state-machine

state machine

上面是我复制的状态机 http://discuss.leetcode.com/questions/241/valid-number

我认为它不能像“0.10”这样的无效值。 可以创建一个状态机,它可以使值不为“0”结束吗?

2 个答案:

答案 0 :(得分:1)

从您的单个示例中推广,我假设您要拒绝小数部分以0结尾。

这样做的地方是州4,这是处理小数部分的数字的位置,可以e/Espace结束。

您需要将0与其他数字区分开来,并复制此状态:4nonzero digits0。同时复制/调整传入的转场(1->42->44->4)。通过省略4°->54°->8并且不让成为接受状态来实现拒绝。

答案 1 :(得分:0)

当然可以。要完全禁止尾随零,一种直接的方法是将每个终端节点复制为两个:可以使用数字19到达的终端节点和可以用0到达的终端节点。之后,相应地调整过渡。

另一方面,根据您问题的性质,您似乎也想要禁止0.以及其他人等号码。究竟允许什么才需要严格的定义,虽然弄乱现有的状态机肯定是可能的,但事实证明你的规则实际上比它中使用的规则更简单。在这种情况下,根据您的定义,您最好从头开始构建一个新的状态机。