class Solution { public: bool isNumeric(string str) { // write code here //数字 continue。 //加减要在 1、要在开头或者E的后面 2、且后面不能是E //E 1、只能出现一次 2、且不能在开头和最后 //小数点 3、在e前只能出现1次,e后不行 2、小数点后要有数字 bool hasE=false; int dot=0; for(int i=0;i<str.size();i++) { cout<<str[i]<<endl; if(str[i]>='0'&&str[i]<='9') continue; if(str[i]=='+'||str[i]=='-') // 判断 +- 不能出现的位置 { if(i!=0&&str[i-1]!='e'&&str[i-1]!='E') // 当出现+- 如果不是开头 或者 前面没有指数e return false; if(i==str.size()-1||str[i+1]=='E'||str[i+1]=='e') // 最后为+-,或者E的前面为+- return false; } else if(str[i]=='E'||str[i]=='e') { if(hasE||i==0||i==str.size()-1) // 已经出现过e 或者 最前面 出现 或者最后面出现都不对 return false; hasE=true; } else if(str[i]=='.') // { if(hasE) // e 后面不能有小数 return false; if(dot>0) // 小数不能出现两次 return false; if(i==str.size()-1) // 小数点不能再最后一位 return false; dot++; } else return false; } return true; } };