Leetcode 65. Valid Number【模拟】

题目链接:

https://leetcode.com/problems/valid-number/

题意:

判断一个字符串是否满足数字规则

分析:

生气,边wa边猜题意。
没啥好说的= = 注意以下几种情况:

  1. 可以含有前导0;
  2. 小数点前后至少一个方向上有数字相邻即可;
  3. $e$前后可以看成两个数字,前面的数字可以含有小数点,后面的数字不能含有小数点。

代码:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
class Solution {
public:
bool isNumber(string s) {
bool flag1 = false;
bool flag2 = false;
int len = s.length();
int st = 0;
int ed = len - 1;
while(s[ed] == ' ' && ed > 0) ed--;
while(s[st] == ' ' && st < len) st++;
if(s[st] == '-'|| s[st] == '+') st++;
if(st > ed) return false;
int i = st;
while(i <= ed){
if(s[i] == '.'){
if(flag1 || flag2) return false;
flag1 = true;
if(i == ed && i == st) return false;
if(i == st && !isdigit(s[i + 1])) return false;
if(i == ed && !isdigit(s[i - 1])) return false;
}else if(s[i] == 'e'){
if(flag2) return false;
if(i == st || i == ed) return false;
flag2 = true;
if(s[i + 1] == '+' || s[i + 1] == '-'){
i++;
if(i == ed || !isdigit(s[i + 1])) return false;
}
}else if(!isdigit(s[i])) return false;
i++;
}
return true;
}
};
文章目录
  1. 1. 题目链接:
  2. 2. 题意:
  3. 3. 分析:
  4. 4. 代码: