解题思路——有限状态自动机
本题使用有限状态自动机。根据字符类型和合法数值的特点,先定义状态,再画出状态转移图,最后编写代码即可。
字符类型
空格 「 」、数字「 0—9 」 、正负号 「 +− 」 、小数点 「 . 」 、幂符号 「 eE 」
状态定义
按照字符串从左到右的顺序,定义以下 9 种状态。
- 开始的空格
- 幂符号前的正负号
- 小数点前的数字
- 小数点、小数点后的数字
- 当小数点前为空格时,小数点、小数点后的数字
- 幂符号
- 幂符号后的正负号
- 幂符号后的数字
- 结尾的空格
结束状态
合法的结束状态又2、3、7、8
算法流程
-
初始化:
1. 状态转移表 states : 设 states[i],其中 i 为所处状态, states[i] 使用哈希表存储可转移至的状态。键值对 (key, value) 含义:若输入 key ,则可从状态 i 转移至状态 value 。
2. 当前状态 p : 起始状态初始化为 p=0 。
-
状态转移循环: 遍历字符串 s 的每个字符 c 。
1.