Validate if a given string is numeric.java
Some examples:"0"
=> true
" 0.1 "
=> true
"abc"
=> false
"1 a"
=> false
"2e10"
=> true
c++
基本上是leetCode上經過率最低的一道了,本身寫了不少遍,就是有小問題通不過,最後參考了別人的寫法,很精簡,代碼以下所示:git
3 bool isNumber(const char * s) 4 { 5 int i = 0; 6 int digitCount = 0; 7 while(s[i] == ' ') i++; //skip spaces 8 9 if(s[i]=='+' || s[i] == '-') i++; //skip sign 10 11 while(isdigit(s[i])){ 12 digitCount++; 13 i++; 14 } 15 16 if(s[i] == '.') i++; 17 18 while(isdigit(s[i])){ 19 digitCount++; 20 i++; 21 } 22 23 if(digitCount==0) return false; 24 25 if(s[i] == 'e' || s[i] == 'E'){ 26 i++; 27 28 if(s[i] == '+' || s[i] == '-') i++;//skp sign of expo 29 30 if(!isdigit(s[i])) return false; 31 32 while(isdigit(s[i])) i++; 33 } 34 35 while(s[i] == ' ') i++; 36 37 return s[i] == '\0'; 38 }
這題比較特殊,使用c語言作是比較方便的,由於c字符串最後一位是'\0',便是前面經過 i 訪問到最後一位的時候也能正常運行,可是使用java的話用上面的方法若是不注意就會出現outOfBound,c++卻能夠,也就是說c++字符串末尾的最後一位實際上也是能夠訪問的。spa