65. Valid Number
什么样是合法的数: 1. 首尾可以出现无数个空格 2. 第一个字符可以是"+/-" 3. 之后必须是数字或者".". 4. 之后可
什么样是合法的数:
1. 首尾可以出现无数个空格
2. 第一个字符可以是"+/-"
3. 之后必须是数字或者".".
4. 之后可以是'e', 如果是'e'后面可以接"+/-" 5. 之后必须是数字.
像.3, -3., -3.e-2啥的都是合法的, 但'.'和'e2'之类的就不合法. 根据这些顺序的规则, 我们用hasDigit判断是否有数字, 如果遇到e就置为false, 后面再有数字置为true。最后判断是否i到了N且hasDigit。
/*n * @lc app=leetcode id=65 lang=cppn *n * [65] Valid Numbern */nclass Solution {npublic:n bool isNumber(string s) {n const int N = s.size();n int i = 0;n // trimn while (i < N && s[i] == ' ') ++i;n // the signn if (i < N && (s[i] == '+' || s[i] == '-')) ++i;n // digits untiln bool digit = false;n while (i < N && (s[i] >= '0' && s[i] <= '9')) {n digit = true;n ++i;n }n // the dotn if (i < N && s[i] == '.') ++i;n // continuen while (i < N && (s[i] >= '0' && s[i] <= '9')) {n digit = true;n ++i;n }n // 'e'n if (i < N && s[i] == 'e' && digit) {n digit = false;n ++i;n if (i < N && (s[i] == '+' || s[i] == '-')) ++i;n }n // continuen while (i < N && (s[i] >= '0' && s[i] <= '9')) {n digit = true;n ++i;n }n // trimn while (i < N && s[i] == ' ') ++i;n return (i == N) && digit;n }n};n
下一篇:Marvisia这个品牌