題目描述
請實現乙個函式用來判斷字串是否表示數值(包括整數和小數)。例如,字串"+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 均不匹配 本題的主要思路如下 首先判...