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這個品牌







