题解:
class Solution { public: // 1. "+""-" :必须出现在第一位或者e的后面; // 2. "." 只能出现一次,并且出现在e的前面; // 3. "e" 只能出现一次,只能出现在两个数字中间 bool isNumber(string s) { trim(s); bool numfg=false,dotfg=false,efg=false; for(int i=0;i<s.size();i++) { if(s[i]>='0'&&s[i]<='9'){ numfg=true; } else if(s[i]=='+'||s[i]=='-'){ if(!(i==0||(s[i-1]=='e'||s[i-1]=='E'))){ return false; } } else if(s[i]=='.'){ if(dotfg==true||efg==true){ return false; } dotfg=true; } else if(s[i]=='e'||s[i]=='E'){ if(efg==true||numfg==false){ return false; } efg=true; numfg=false; } else{ return false; } } return numfg; } // 字符串去除前后的空格 void trim(string &s) { if( !s.empty() ){ s.erase(0,s.find_first_not_of(" ")); s.erase(s.find_last_not_of(" ") + 1); } } };