LeetCode[String]: Valid Number

Validate if a given string is numeric. Some examples: “0” => true ” 0.1 ” => true “abc” => false “1 a” => false “2e10” => true Note: It is intended for the problem statement to be ambiguous. You should gather all requirements up front before implementing one.

这个题目是我在LeetCode上遇到的最闹心的题目,这个题目没有给出合法数字的定义,,我们要做的就是不断地测试,直到处理所有的情况为止。

我的C++代码如下:

bool isNumber(string s) {s.erase(0, s.find_first_not_of(” “));s.erase(s.find_last_not_of(” “) + 1);s.erase(0, s.find_first_not_of(“+”));s.erase(0, s.find_first_not_of(“-“));if (s[0] == ‘e’ || s[s.size() – 1] == ‘e’) return false;if (s[0] == ‘.’ && s[1] == ‘e’) return false;bool isFloat = false;bool isScientific = false;bool lastIsE = false;for (auto c : s) {if (lastIsE) {lastIsE = false;if (c != ‘+’ && c != ‘-‘ && (c < ‘0’ || c > ‘9’)) return false;}else if (c == ‘.’) {if (isFloat || isScientific) return false;isFloat = true;}else if (c == ‘e’) {if (isScientific) return false;isScientific = true;lastIsE = true;}else if (c < ‘0’ || c > ‘9’)return false;}if (s[s.size() – 1] == ‘+’ || s[s.size() – 1] == ‘-‘) return false;if (s.size() == 1 && (isFloat || isScientific)) return false;return s.empty() ? false : true;}

时间性能如下图所示:

人只要不失去方向,就不会失去自己

LeetCode[String]: Valid Number

相关文章:

你感兴趣的文章:

标签云: