题意
验证一个字符串是否为数字
思路
可能会出现的情况:
前导空格和后缀空格字符串存在多个小数点或者多个
e
或者存在其他字母
小数点前面没有数字,这种情况是
true
e
前面没有数字,这种情况是
false
e
或者小数点后面没有数字是
false
代码
class Solution {
public:
bool isNumber(
string s) {
int len = s.length() -
1;
int flag =
0;
int cnt =
0;
int loc =
0;
while(
len >=
0 && s[
len] ==
' ')
len--;
while(loc <=
len && s[loc] ==
' ') loc++;
for(
int i = loc; i <=
len; i++){
if(s[i] >=
'a' && s[i] <=
'z'){
if(s[i] ==
'e'){
cnt++;
}
else{
flag =
1;
break;
}
}
}
if(flag)
return false;
cnt =
0;
for(
int i = loc; i <=
len; i++){
if(s[i] ==
'.'){
cnt++;
}
}
if(cnt >
1)
return false;
if(s[loc] ==
'+' || s[loc] ==
'-') loc++;
cnt =
0;
while(loc <=
len && ((s[loc] >=
'0' && s[loc] <=
'9') || s[loc] ==
'.')){
if(s[loc] !=
'.')
cnt++;
loc++;
}
if(cnt <
1)
return false;
if(s[loc] ==
'e'){
loc++;
if(s[loc] ==
'+' || s[loc] ==
'-') loc++;
cnt =
0;
while(loc <=
len && s[loc] >=
'0' && s[loc] <=
'9') {
cnt++;
loc++;
}
if(cnt <
1)
return false;
}
return loc >
len;
}
};
转载请注明原文地址: https://www.6miu.com/read-96360.html