劍指offer 52 表示數值的字串

2021-10-04 07:11:14 字數 1233 閱讀 2106

題目描述

請實現乙個函式用來判斷字串是否表示數值(包括整數和小數)。例如,字串"+100",「5e2」,"-123",「3.1416"和」-1e-16"都表示數值。

但是"12e",「1a3.14」,「1.2.3」,"±5"和"12e+4.3"都不是。

正則解法

思路:

正規表示式的解法,熟悉正規表示式的可以利用正規表示式解法

先判斷是否有加減號一開始,然後後面跟著是不是數字,是就為true,不是false,

如果跟著e則說明是冪函式,後面判斷一次±號然後繼續2的步驟

/*

以下對正則進行解釋:

[\\+\\-]? -> 正或負符號出現與否

\\d* -> 整數部分是否出現,如-.34 或 +3.34均符合

(\\.\\d+)? -> 如果出現小數點,那麼小數點後面必須有數字; 否則一起不出現

([ee][\\+\\-]?\\d+)? -> 如果存在指數部分,那麼e或e肯定出現,+或-可以不出現, 緊接著必須跟著整數;或者整個部分都不出現

*/

public

class

solution

}

正常解法

思路:

利用下標,對字串長度進行位移判斷

判斷第一位會不會出現符號位,不會判斷整數字,整數字判斷完,檢查有.還是有e,.後面跟著整數字,e後面跟著符號位再是整數字

public

class

solution

if(index < str.length &&

(str[index]

=='e'

|| str[index]

=='e'))

return flag && index == str.length;

}//判斷符號位

private

boolean

scaninteger

(char

str)

//判斷是否存在整數

private

boolean

scanunsignedinteger

(char

str)

}

《劍指offer》 52 構建乘積陣列

題目 給定乙個陣列a 0,1,2.n 1 請構建乙個陣列b 0,1,2,n 1 使b中的元素b i a 0 a 1 a i 1 a i 1 a n 1 不能使用除法。解決思路 通過正反兩次來求b i 正著 b i a 0 a i 1 反著 temp b n b i 1 最後通過b i temp就可以...

劍指offer(52) 鍊錶中環的入口結點

乙個鍊錶中包含環,請找出該鍊錶的環的入口結點。struct listnode class solution listnode pslow phead next if pslow null listnode pfast phead next next while pfast null pslow nu...

劍指offer 52 正規表示式匹配

請實現乙個函式用來匹配包括 和 的正規表示式。模式中的字元 表示任意乙個字元,而 表示它前面的字元可以出現任意次 包含0次 在本題中,匹配是指字串的所有字元匹配整個模式。例如,字串 aaa 與模式 a.a 和 ab ac a 匹配,但是與 aa.a 和 ab a 均不匹配 本題的主要思路如下 首先判...