1.题目描述
请实现一个函数用来判断字符串是否表示数值(包括整数和小数)。例如,字符串"+100",“5e2”,"-123",“3.1416"和”-1E-16"都表示数值。 但是"12e",“1a3.14”,“1.2.3”,"±5"和"12e+4.3"都不是。
2.具体实现
//s字符串
function isNumeric(s)
{
// write code here
var n=0;
if(s[s.length-1]=="."||s[s.length-1]=="e"||s[s.length-1]=="E"||s[s.length-1]=="-"||s[0]=="."){
return false;
}
for(var i=0;i<s.length;i++){
if(((s[i]-'0')>=0&&(s[i]-'0')<=9)||(s[i]=="-"&&i==0)||(s[i]=="+"&&i==0)||s[i]=="."){
//正负数
//正负数
if(s[i]=="."){
n++;
}
if(n>1){
return false;
}
}
else if(s[i]=="e"||s[i]=="E"){
//有科学计数法的表示方法
for(var j=i+1;j<s.length;j++){
if(s[j]=="."){//科学技术法后面的数据必须为整数。
return false;
}
}
}
else if(s[i]=="+"||s[i]=="-"){//后面有加减号的情况,必须前面是科学技术法表示。
if(s[i-1]=="e" || s[i-1]=="E"){
}
else{
return false;
}
}
else{
return false;
}
}
return true;
}
运行时间:12ms
占用内存:5240k
这个代码量有点拉垮!