剑指 Offer 20. 表示数值的字符串
这个题很烦。不告诉什么样的数字是合法的,面向测试用例编程。
最简单的思路。
class Solution {
public boolean isNumber(String s) {
char[] ss=s.trim().toCharArray();
boolean hasNum=false,hasSign=false,hasE=false,hasDot=false;
int m=ss.length;
for(int i=0;i<m;i++){
if(ss[i]=='+'||ss[i]=='-')//第一个字符是+,-号
{ if(hasSign||hasNum)
return false;
else
hasSign=true;
}
else if(ss[i]=='e'||ss[i]=='E') {
if(hasE||!hasNum)
return false;
else{//E后面不能有小数,必须有正整数或负整数,不能有E
hasE=true;
hasSign=false;
hasNum=false;
}
}
else if(ss[i]=='.'){
if(hasDot||hasE)
return false;
else{
hasSign=true;
hasDot=true;
}
}
else if(ss[i]>='0'&&ss[i]<='9')
hasNum=true;
else
return false;
}
if(!hasNum)
return false;
return true;
}
}

浙公网安备 33010602011771号