二刷感想:还是不能完全考虑到,哎
对是不是数字的判断不符合常识啊,有点迷
class Solution {
public boolean isNumber(String s) {
boolean isNum=false;//是否是数字
boolean isDot=false;//是否出现过'.'
boolean isE=false;//是否出现过'e'或'E'
char[] ss=s.trim().toCharArray();//String转char[]
for(int i=0;i<ss.length;i++){
if(ss[i]>='0'&&ss[i]<='9'){
isNum=true;
}
else if(ss[i]=='.'){
if(isDot||isE)//已经出现过'.'或'E'或'e'
return false;
isDot=true;
}
else if(ss[i]=='e'||ss[i]=='E'){
if(!isNum||isE)//e或E之前必须有数
return false;
else{
isE=true;
isNum=false;//e或E之后必须有数
}
}
else if(ss[i]=='+'||ss[i]=='-'){
//必须在第0位 或 前一个位置是e或E
if(i!=0&&ss[i-1]!='e'&&ss[i-1]!='E'){
return false;
}
}
//其他不符合条件的字符
else{
return false;
}
}
return isNum;
}
}