客户端网站建设文档,托者设计吧官网,火是用什么做的视频网站,湖南网站建设网络公司Valid Number 题解 题目描述 即判断某个字符串是否合法的数字表达式。如#xff1a; 2e10#xff0c;合法。 75.0.#xff0c;非法。 0e#xff0c;非法。 0.1 #xff0c;合法。题解 基于规则与状态判断。可利用二维数组模拟状态转移图#xff0c;又或是利用变量记录状… Valid Number 题解 题目描述 即判断某个字符串是否合法的数字表达式。如 2e10合法。 75.0.非法。 0e非法。 0.1 合法。题解 基于规则与状态判断。可利用二维数组模拟状态转移图又或是利用变量记录状态。时间复杂度为O(N)空间复杂度为O(1)。 代码 class Solution {
public:bool isNumber(std::string str) {int i 0, len str.size(), exponent 0, decimal 0, c 0;if (i len) return false;while (str[i] ) if (i len) return false;if (str[i] || str[i] -) if (i len) return false;if (str[i] .) {if (i len) return false;decimal 1;}if (str[i] 0 || str[i] 9) return false;for (i; i len; )if (str[i] 0 str[i] 9) {i;} else if (str[i] e || str[i] E) {if (exponent 1) return false;if (i len) return false;if (str[i] || str[i] -) if (i len) return false;} else if (str[i] .) {if (decimal 1 || exponent) return false;if (i len) return true;} else if (str[i] ) {if (str[i - 1] ! . (str[i - 1] 0 || str[i - 1] 9)) return false;while (i len) if (str[i] ! ) return false;return true;} else {return false;}return true;}
}; 总结 主要应用了有限状态机的思想。