上面是我复制的状态机 http://discuss.leetcode.com/questions/241/valid-number
我认为它不能像“0.10”这样的无效值。 可以创建一个状态机,它可以使值不为“0”结束吗?
答案 0 :(得分:1)
从您的单个示例中推广,我假设您要拒绝小数部分以0
结尾。
这样做的地方是州4
,这是处理小数部分的数字的位置,可以e/E
或space
结束。
您需要将0
与其他数字区分开来,并复制此状态:4
为nonzero digits
,4°
为0
。同时复制/调整传入的转场(1->4
,2->4
和4->4
)。通过省略4°->5
和4°->8
并且不让4°
成为接受状态来实现拒绝。
答案 1 :(得分:0)
当然可以。要完全禁止尾随零,一种直接的方法是将每个终端节点复制为两个:可以使用数字1
到9
到达的终端节点和可以用0
到达的终端节点。之后,相应地调整过渡。
另一方面,根据您问题的性质,您似乎也想要禁止0.
以及其他人等号码。究竟允许什么才需要严格的定义,虽然弄乱现有的状态机肯定是可能的,但事实证明你的规则实际上比它中使用的规则更简单。在这种情况下,根据您的定义,您最好从头开始构建一个新的状态机。