LeetCode OJ:Valid Number

Validate if a given string is numeric.java

Some examples:
"0" => true
" 0.1 " => true
"abc" => false
"1 a" => false
"2e10" => truec++

基本上是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

相關文章
相關標籤/搜索