leetcode 65:有效數字
阿新 • • 發佈:2018-12-09
不知道這道題對於演算法有什麼作用,而且每個人可能理解有效的數字都不一樣,怎麼能證明考慮周到不周到呢,不斷的提交就完了
下面的是我認為肯定不合格但是卻是合格的一些代表
"+45.e+67"->true
".1"->true
"1."->true
"0123"->true
bool isNumber(std::string s) { s.erase(0,s.find_first_not_of(" ")); s.erase(s.find_last_not_of(" ")+1); if(s.size()==0) return false; if(s.size()==1){ if(s[0]=='.'||s[0]=='+'||s[0]=='-'||s[0]=='e') return false; } if(s.find_first_of(" ")!=-1) return false; if(s.find_first_of(".")!=s.find_last_of(".")) return false; for(int i=0;i<s.size();i++){ if((s[i]<'0'&&s[i]!='.'&&s[i]!='+'&&s[i]!='-')||(s[i]>'9'&&s[i]!='e')) return false; if((s[i]=='e')&&((i==1&&(s[0]=='+'||s[0]=='-'))||i==0||i==s.size()-1)) return false; } if(s.find_first_of("e")!=s.find_last_of("e")) return false; if(s.find_first_of("+")!=s.find_last_of("+")&&(s[s.find_last_of("+")-1]!='e')) return false; if(s.find_first_of("-")!=s.find_last_of("-")&&(s[s.find_last_of("-")-1]!='e')) return false; if(s[0]=='e') return false; int a=s.find_first_of('.'); if(s[a+1]=='e'&&a!=0) if(s.size()==a+1) return false; if(s[0]=='.'&&(s[1]=='e')) return false; if(s[0]=='+'||s[0]=='-') { if (s[1] == '.'&&( s[2]=='e')) return false; } int b=s.find_first_of('e'); int c=s.find_first_of('.'); if(b!=-1&&b<c) return false; c=s.find_first_of('+'); if(b!=-1&&c+1==b) return false; c=s.find_first_of('-'); if(b!=-1&&c+1==b) return false; if(s.find_first_of("+")!=-1) if(s.find_first_of("+")!=0) if(s.find_first_of("e")==-1) return false; if(s.find_first_of("-")!=-1) if(s.find_first_of("-")!=0) if(s.find_first_of("e")==-1) return false; if(s[s.size()-1]=='+'||s[s.size()-1]=='-') return false; if(s[0]=='+'||s[0]=='-'){ if(s[1]=='.'&&s.size()==2) return false; } return true; }