注意: 该例子如果在面试中出现,首先应该通过模拟写出几个case,在有限时间内,想要理清楚DFA的状态以及转移是不容易的。因此这里仅仅作为一个DFA示例,说明DFA是如何work的。
先分析状态:
/*
0. 初始状态
1. 符号位
2. 整数部分
3. 左侧有整数的小数点
4. 左侧无整数的小数点(根据前面的第二条额外规则,需要对左侧有无整数的两种小数点做区分)
5. 小数部分
6. 字符 \text{e}e
7. 指数部分的符号位
8. 指数部分的整数部分
9. 结束
*/
画出状态的转移(状态之间的转移是通过遇到字符处理)
可以根据DFA写出对应的代码:
class Solution {
public:
/*
0. 初始状态
1. 符号位
2. 整数部分
3. 左侧有整数的小数点
4. 左侧无整数的小数点(根据前面的第二条额外规则,需要对左侧有无整数的两种小数点做区分)
5. 小数部分
6. 字符 \text{e}e
7. 指数部分的符号位
8. 指数部分的整数部分
9. 结束
*/