劍指offer 表示數值的字串

2021-10-06 12:04:21 字數 2409 閱讀 8480

請實現乙個函式用來判斷字串是否表示數值(包括整數和小數)。例如,字串"+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 都不是。本題考查對字串的程式設計能力,我們需要從不同型別的數值中分析規律,要全面考慮數值整數,小數,指...