哪些网站可以做锚文本,免费行情软件的特点和优势,关于友谊的连接,哈尔滨仿站定制模板建站题解分析代码实现实现一个函数用来判断字符串是否表示数值(包括整数和小数)。题解分析一个标识数字的字符串可能包括以下字符类型#xff1a;空格#xff1b;数组#xff1a;0~9#xff1b;正负号小数点幂符号#xff1a;e/E#xff1b;为了解决此类问题#xff0c;需要… 题解分析代码实现实现一个函数用来判断字符串是否表示数值(包括整数和小数)。题解分析一个标识数字的字符串可能包括以下字符类型空格数组0~9正负号小数点幂符号e/E为了解决此类问题需要使用有限状态自动机字符串有如下状态0开始的空格1幂符号前的正负号2小数点前的数字3小数点、小数点后的数字4小数点前为空格时小数点、小数点后的数字5幂符号6幂符号后的正负号7幂符号后的数字8结尾的空格合法的结束状态有2、3、7、8。状态转移如下图所示states复杂度分析时间需要遍历整个字符串的长度且状态转移为O(1)所以为O(N)空间只需常数额外空间所以为O(1)代码实现状态使用字典列表表示具体实现为func isNumber(strNum string) bool { state : []map[byte]int{ { :0, s:1, d:2, .:4}, // 0: start with blank {d:2, .:4}, // 1: sign before e {d:2, .:3, e:5, :8}, // 2: digit before . {d:3, e:5, :8}, // 3: digit after . {d:3}, // 4: digit after .(‘blank’ before dot) {s:6, d:7}, // 5: e {d:7}, // 6: sign after e {d:7, :8}, // 7: digit after e { :8}, // 8: end with blank } index : 0 var key byte for _,ch : range strNum { if ch0 ch 9{ key d }else { switch ch { case , -: key s case e, E: key e case ., : key byte(ch) default: key ? } } if _,ok:state[index][key]; !ok{ return false } index state[index][key] } switch index { case 2,3,7,8: return true default: return false }}