亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 學院 > 開發設計 > 正文

Leetcode: Valid Number

2019-11-14 21:19:17
字體:
來源:轉載
供稿:網友
Leetcode: Valid Number
Validate if a given string is numeric.Some examples:"0" => true" 0.1 " => true"abc" => false"1 a" => false"2e10" => trueNote: It is intended for the PRoblem statement to be ambiguous. You should gather all requirements up front before implementing one.

這是一道檢查字符串輸入是否為合法的題目。基本規則是按照科學計數法,所以會出現的特殊字符有以下幾個:符號位‘+’,‘-’,小數點‘.’,還有‘e’和‘E’,剩下的就只有數字0-9了,其他字符如果出現就是非法字符,返回false。數字字符在哪里出現都是ok的,我們主要考慮幾個特殊字符的情況。對于小數點出現的時候,我們要滿足一下這些條件:(1)前面不能有小數點或者‘e’和‘E’;(2)前一位是數字(不能是第一位)或者后一位要是數字(不能是最后一位)。對于正負號出現的情況,要滿足條件:(1)必須是第一位或者在‘e’和‘E’后一位;(2)不能是最后一位且后一位要是數字或者‘.’ (“+.8”是true的,這里其實結合了小數點正確的判斷即小數點前或者后有一個數字)。對于‘e’和‘E’的情況,要滿足:(1)前面不能有‘e’和‘E’出現過;(2)不能是第一位(前面沒數字科學計數沒有意義)或者最后一位(后面沒數字就不用寫指數了)。根據上面列舉的情況,我們用兩個標簽和做前后位的判斷來實現,算法復雜度比較明顯是O(n)的,只需要O(1)的額外空間。代碼如下:

其中最難理解第11行,要這樣理解:小數點正確的出現方式是————除了不能有小數點或者‘e’和‘E’之外,前一位或后一位至少有一個數字,說的確切一點是:(前一位是數字&&不是第一位)||(后一位是數字&&不是最后一位)。這里只需要前一位或者后一位是數字就好了,不需要都是,舉個例子就是比如".1"是true的。本例是要找出那些小數點錯誤出現的case來return false,而小數點錯誤出現的條件就是不滿足上面正確出現的條件,所以對上面正確條件取反,進而得到:(是第一位||前一位不是數字)&&(是最后一位||后一位不是數字),這就是小數點錯誤出現的條件,即

(i==0 || !(s.charAt(i-1)>='0' && s.charAt(i-1)<='9')) && (i==s.length()-1 || !(s.charAt(i+1)>='0' && s.charAt(i+1)<='9'))

同理,比較難理解的還有18行,還是這樣,先寫符號位‘+’,‘-’正確出現的方式--------

(i==0 || s.charAt(i-1)=='e' || s.charAt(i-1)=='E') && i<s.length()-1 && (s.charAt(i+1)>='0' && s.charAt(i+1)<='9' || s.charAt(i+1)=='.')

那么,先寫符號位‘+’,‘-’不正確出現的方式就是取反:

(i>0 && s.charAt(i-1)!='e' && s.charAt(i-1)!='E') || i==s.length()-1 || !(s.charAt(i+1)>='0' && s.charAt(i+1)<='9' || s.charAt(i+1)=='.')

如果嫌自己去獲得取反之后的表達式比較麻煩,那么就可以直接加上括號再取反

比如:小數點的情況!((i!=0 && (s.charAt(i-1)>='0' && s.charAt(i-1)<='9')) || (i!=s.length()-1 && (s.charAt(i+1)>='0' && s.charAt(i+1)<='9')))

 1 public class Solution { 2     public boolean isNumber(String s) { 3         if (s == null) return false; 4         s = s.trim(); 5         if (s.length() == 0) return false; 6         boolean dotFlag = false; 7         boolean eFlag = false; 8         for (int i=0; i<s.length(); i++) { 9             switch(s.charAt(i)) {10                 case '.': 11                     if (dotFlag || eFlag || (i==0 || !(s.charAt(i-1)>='0' && s.charAt(i-1)<='9')) && (i==s.length()-1 || !(s.charAt(i+1)>='0' && s.charAt(i+1)<='9'))) {12                         return false;13                     }14                     dotFlag = true;15                     break;16                 case '+':17                 case '-':18                     if ((i>0 && (s.charAt(i-1)!='e') && s.charAt(i-1)!='E') || i==s.length()-1 || !(s.charAt(i+1)>='0' && s.charAt(i+1)<='9' || s.charAt(i+1)=='.')) {19                         return false;20                     }21                     break;22                 case 'E':23                 case 'e':24                     if (eFlag || i==0 || i==s.length()-1) {25                         return false;26                     }27                     eFlag = true;28                     break;29                 case '0':30                 case '1':31                 case '2':32                 case '3':33                 case '4':34                 case '5':35                 case '6':36                 case '7':37                 case '8':38                 case '9':39                     break;40                 default: return false;41             }42         }43         return true;44     }45 }

特殊的情況包括“”以及“ ”,都是false的,但是如果我們不特殊處理,程序將會輸出true,所以要在開頭s.trim()了之后進行一個判斷


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
国产精品色视频| 91免费综合在线| 国产91在线播放九色快色| 久久久亚洲影院| 欧美亚洲日本黄色| 欧美日韩亚洲视频一区| 久久久久久久久久久免费| 欧美丝袜一区二区| 久久久久久久久久久久久久久久久久av| 国产精品久久久久久久久男| 欧美在线一区二区三区四| 色中色综合影院手机版在线观看| 8050国产精品久久久久久| 久久韩剧网电视剧| 久久久精品一区二区三区| 欧美高清视频在线| 亚洲福利小视频| 午夜精品久久久99热福利| 久久亚洲精品成人| 全色精品综合影院| 国产精品爽爽爽| 欧美成人三级视频网站| 国产日韩欧美在线视频观看| 欧美日韩国产中文精品字幕自在自线| 日韩毛片中文字幕| 日韩在线一区二区三区免费视频| 亚洲丝袜一区在线| 夜夜躁日日躁狠狠久久88av| 久久久久久久久久久人体| 国产福利视频一区| 麻豆乱码国产一区二区三区| 亚洲天堂日韩电影| 91系列在线观看| 日韩av大片免费看| 97超碰色婷婷| 精品国产一区二区三区久久狼黑人| 亚洲男人天堂网| 欧美激情视频一区| 日韩在线视频观看正片免费网站| 欧美精品性视频| 91精品国产高清久久久久久久久| 久久久99久久精品女同性| 久久资源免费视频| 国产欧美日韩专区发布| 亚洲免费电影一区| 亚洲最新视频在线| 国产精品成人品| 中文综合在线观看| 成人性生交xxxxx网站| 成人黄色午夜影院| 97碰在线观看| 欧美精品在线看| 91丨九色丨国产在线| 国产日韩精品在线观看| 成人信息集中地欧美| 日韩成人在线电影网| 国产成人一区二区在线| 久久久久久久影院| 日韩在线观看精品| 免费av一区二区| 精品国内产的精品视频在线观看| 国产精品成人aaaaa网站| 国产欧美日韩中文字幕在线| 国产欧美精品一区二区三区介绍| 日韩激情视频在线播放| 欧美一级电影免费在线观看| 最近2019年手机中文字幕| 日韩中文字幕视频在线观看| 97成人精品区在线播放| 国内成人精品一区| 日韩网站免费观看| 欧美亚洲激情在线| 中文字幕日韩欧美| 亚洲欧美日韩精品| 97视频在线观看免费高清完整版在线观看| 久久久女人电视剧免费播放下载| 91久久久久久久久久久久久| 国产成人精品免费视频| 欧美色图在线视频| 亚洲成人教育av| 久久久电影免费观看完整版| 欧美一区二区三区精品电影| 日韩欧美在线看| 日本在线观看天堂男亚洲| 亚洲欧美日韩在线高清直播| 亚洲男人天堂网站| 成人免费网站在线| 97精品国产97久久久久久免费| 精品国偷自产在线视频99| 国产999视频| 久久久久久久国产| 国产精品一区二区久久国产| 欧美另类在线观看| 91精品国产自产在线老师啪| www.亚洲男人天堂| 亚洲xxxx视频| 国产欧美最新羞羞视频在线观看| 日本精品视频在线| 国产精品久久久久久久午夜| 日韩av在线播放资源| 国内成人精品一区| 国产精品久久久久免费a∨| 成人亚洲欧美一区二区三区| 亚洲欧洲日本专区| 久久精品视频播放| 国产精品激情自拍| 久久777国产线看观看精品| 日韩高清人体午夜| 久久综合久久88| 欧美日韩一区二区免费在线观看| 国产精品久久久久久久久免费看| 国产精品免费视频xxxx| 国内精品中文字幕| 黑人巨大精品欧美一区二区一视频| 欧美大胆a视频| 精品久久久久久久久久久久| 91久久精品在线| 国产精品综合久久久| 国产女精品视频网站免费| 尤物精品国产第一福利三区| 国内精品久久久久久中文字幕| 亚洲精品美女久久久| 国产精品黄色影片导航在线观看| 欧美视频免费在线| 91久久久精品| 色多多国产成人永久免费网站| 国产成人精品久久亚洲高清不卡| 国产极品精品在线观看| 久久亚洲一区二区三区四区五区高| 欧美性xxxxxxx| 疯狂做受xxxx高潮欧美日本| 国产日韩精品电影| 国产精品电影网站| 国产欧美日韩综合精品| 欧美另类极品videosbest最新版本| 青青草国产精品一区二区| 欧美日韩国产一中文字不卡| 国产视频亚洲视频| 精品伊人久久97| 国产精品免费网站| 91老司机精品视频| 亚洲影院色无极综合| 亚洲精品日产aⅴ| 一区二区亚洲精品国产| 国产在线观看一区二区三区| 国产精品丝袜久久久久久不卡| 亚洲精品一区二区三区不| 国产欧美最新羞羞视频在线观看| 久久影视电视剧凤归四时歌| 7m精品福利视频导航| 国产精选久久久久久| 国产精品海角社区在线观看| 亚洲高清久久久久久| 午夜精品久久久久久久男人的天堂| 在线视频日韩精品| 亚洲va欧美va在线观看| 久久91精品国产91久久久| www欧美xxxx| 97热在线精品视频在线观看| 国产综合在线看| 中文在线资源观看视频网站免费不卡| 青青草原一区二区| 精品呦交小u女在线| 久久久精品一区|