题目描述
请实现一个函数用来判断字符串是否表示数值(包括整数和小数)。例如,字符串"+100",“5e2”,"-123",“3.1416"和”-1E-16"都表示数值。 但是"12e",“1a3.14”,“1.2.3”,"±5"和"12e+4.3"都不是。
解答
规则
1.首位可以是数字和符号
2.尾位不能是数字以外的符号
3.e前必须要有数字
4.只能有一个小数点
5.e后不能有小数点
class Solution {
public:
/**
* 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
*
*
* @param str string字符串
* @return bool布尔型
*/
bool isNumeric(string str) {
bool point = false;
bool e = false;
bool sign_1 = false;
bool sign_2 = false;
bool num = false;
int l = str.length();
for(int i=0;i<l;i++){
if(str[i]<='9' && str[i]>='0')
num = true;
else if(str[l-1]<='9' && str[l-1]>='0')
return false;
else if(i==0){
if(str[i]=='+' || str[i]=='-'){
sign_1 = true;
}
else
return false;
}
else if(str[i] == '+' || str[i] == '-'){
if(e == true && sign_2 == false)
sign_2 = true;
else
return false;
}
else if(str[i]=='e'||str[i]=='E'){
if(e == false && num == true)
e = true;
else
return false;
}
else if(str[i]=='.'){
if(e == true || point == true)
return false;
else{
point = true;
}
}
else
return false;
}
return true;
}
};