劍指offer 53 表示數值的字串

2021-08-26 05:22:52 字數 1875 閱讀 7665

題目描述

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

`輸出描述:

true/false

在數值之前可能有乙個表示正負的『+』或者『-』,接下來是若干個0到9的數字表示數值的整數部分(在某些小數里可能沒有數值的整數部分)。如果數值是乙個小數,那麼在小數點後面可能會有若干個0到9的數字表示數值的小數部分。如果數值用科學技術法表示,接下來是乙個'e'或者『e』,以及緊跟著的乙個整數(可以有正負號)表示指數。 

[1-9] :匹配1~9的數字;

\d :匹配數字,包括0~9;

* :緊跟在 \d 之後,表明可以匹配零個及多個數字;

\. :匹配小數點;

? :緊跟在 \. 之後,表明可以匹配零個或乙個小數點;

附:正規表示式常用符號

^開始  $結束

*匹配前乙個表示式0次或多次。等價於 。

+匹配前面乙個表示式1次或者多次。等價於 。

?匹配前面乙個表示式0次或者1次。等價於 。/e?le?/ 匹配 「angel」 中的 『el』,和 「angle」 中的 『le』 以及」oslo』 中的』l』。

[xyz]乙個字元集合。

(x)匹配 『x』 並且記住匹配項

public boolean isnumeric_1(char str)
思路:將char型陣列轉成字串,再用double的parsedouble方法轉成double型數字,如果能轉成功,則返回true。否則會發生numberformatexception異常。返回false。

public boolean isnumeric(char str)  catch (numberformatexception e) 

return true;

}

首先看第乙個字元是不是正負號。如果是,在字串上移動乙個字元,繼續掃瞄剩餘的字串中0-9的數字。如果是乙個小數,則將遇到小數點。另外,如果是用科學計數法表示的數值,在整數或者小數的後面還可能遇到『e』或者『e』。編寫**時時刻需要判斷陣列是否越界。

public class solution 

int index = 0;

if(str[index] == '+' || str[index] == '-')

if(index == str.length)

boolean isnumeric = true;

index = scandigits(str, index);

if(index < str.length)

else

}else

}else

}else if(str[index] == 'e' || str[index] == 'e')

else

}else

}else

return isnumeric;

}private boolean i***ponential(char str, int index)

while(index < str.length && str[index] >= '0' && str[index] <= '9')

return (index == str.length) ? true : false;

}private int scandigits(char str, int index)

return index;

}}

劍指offer 53 表示數值的字串

請實現乙個函式用來判斷字串是否表示數值 包括整數和小數 例如,字串 100 5e2 123 3.1416 和 1e 16 都表示數值。但是 12e 1a3.14 1.2.3 5 和 12e 4.3 都不是。本題的主要解題思路如下 首先判斷字串是否為空,或者首元素是否為 若是是則直接返回false 否...

劍指Offer53 表示數值的字串

思路 coding utf 8 class solution s字串 def isnumeric self,s write code here hase false sign false decimal false for i in range 0,len s if s i e or s i e i...

劍指offer(53)表示數值的字串

問題描述 請實現乙個函式用來判斷字串是否表示數值 包括整數和小數 例如,字串 100 5e2 123 3.1416 和 1e 16 都表示數值。但是 12e 1a3.14 1.2.3 5 和 12e 4.3 都不是。思路 1.正規表示式。正或負符號出現與否 d 整數部分是否出現,如 34 或 3.3...