請實現乙個函式用來判斷字串是否表示數值(包括整數和小數)。例如,字串"+100",「5e2」,"-123",「3.1416"和」-1e-16"都表示數值。 但是"12e",「1a3.14」,「1.2.3」,"±5"和"12e+4.3"都不是。
方法一:正規表示式
public
class
solution
}
方法二:異常捕獲
double.parsedouble方法是把數字型別的字串,轉換成double型別
public
class
solution
catch
(exception e)
return
true;}
}
方法三:
乙個數值包括整數部分a、小數部分b和指數部分c。而我們常見的數值形式為abc\ab\ac\bc\a\b,也就是說指數部分前面必須有數。整數部分為有符號數,小數部分為無符號數而指數部分為有符號數。因此我們需要新增兩個函式,分別判斷當前字串為有符號數scaninteger()和無符號數scanunsignedinteger();1、 掃瞄字串,判斷當前字串中是否存在有符號數,
2、若遇到".",則後面接的應該是小數部分,應該是乙個無符號數;
3、 若遇到『e』或『e』,則為指數部分,應該是乙個有符號數。
public
class
solution
//判斷指數部分
if(index(str[index]
=='e'
||str[index]
=='e'))
return flag&&index==str.length;
}public
boolean
scaninteger
(char
str)
public
boolean
scanunsignedinteger
(char
str)
return index>start;
}}
注意事項:
附正規表示式的基本知識:1、常見的匹配符號:
正規表示式描述.
匹配任意字元
^匹配輸入字串開始的位置。如果設定了 regexp 物件的 multiline 屬性,^ 還會與」\n」或」\r」之後的位置匹配。
$匹配輸入字串結尾的位置。如果設定了 regexp 物件的 multiline 屬性,$ 還會與」\n」或」\r」之前的位置匹配。
[abc]
集定義,可以匹配字母a或b或c。例如,」[abc]」匹配」jian」中的」a」。
[abc] [vz]
集定義,可以匹配或b或c,接著為v或z
[^abc]
向字符集。匹配未包含的任何字元。例如,」[^abc]」匹配」plain」中」p」,」l」,」i」,」n」。
[a-d1-7]
範圍:從1到7 a和d和數字之間的匹配信,但不能匹配d1
x/z查詢x或z
xz發現x直接跟著z
2、元字元
正規表示式
描述\d
數字字元匹配。等效於 [0-9]。
\d非數字字元匹配。等效於 [^0-9]。
\s匹配任何空白字元,包括空格、製表符、換頁符等。與 [ \f\n\r\t\v] 等效。
\s匹配任何非空白字元。與 [^ \f\n\r\t\v] 等效。
\w垂直製表符匹配。與 \x0b 和 \ck 等效。
\w匹配任何字類字元,包括下劃線。與」[a-za-z0-9_]」等效。
\b匹配乙個單詞邊界,單詞字元是 [a-za-z0-9_]
3、量化
正規表示式
描述例子
*出現零次或更多次,等效於 ,例如,jia* 匹配」ji」和」jian」
x *0個或多個字母x,*找到任何字串行
+發生一次或多次,是的縮寫
x+ 找到乙個或幾個字母x
?沒有發生次或一次,?是的縮寫。
x? 未找到或只有乙個字母x
非負整數。正好匹配 x 次。例如,」o」與」bob」中的」o」不匹配,但與」food」中的兩個」o」匹配。
\d搜尋三位數字,.對於長度為10的任何字串行。
x和y之間發生
\d\d出現至少一次,並最多出現四個。
*??後乙個量詞使其成為乙個不貪婪的量詞。它試圖找到最小的匹配。
劍指Offer 表示數值的字串
題目 請實現乙個函式用來判斷字串是否表示數值 包括整數和小數 例如,字串 100 5e2 123 3.1416 和 1e 16 都表示數值。但是 12e 1a3.14 1.2.3 5 和 12e 4.3 都不是。基本思路 字串應滿足通式a b e ec 或者.b e ec 其中,a c表示有 或無 ...
表示數值的字串 劍指offer
這道題寫起來比較繁瑣,需要考慮 號是否出現在第乙個位置,是否出現一次,以e為分割前後是不是正確的格式,e前可以為浮點數或者整數,e後只能是整數。因此如果把函式分成三個子函式來寫就好多了,乙個函式判斷是不是整數,乙個判斷是不是浮點數,乙個判斷e前後是否合法。include include bool i...
劍指offer 表示數值的字串
請實現乙個函式用來判斷字串是否表示數值 包括整數和小數 例如,字串 100 5e2 123 3.1416 和 1e 16 都表示數值。但是 12e 1a3.14 1.2.3 5 和 12e 4.3 都不是。本題考查對字串的程式設計能力,我們需要從不同型別的數值中分析規律,要全面考慮數值整數,小數,指...