劍指Offer 表示數值的字串

2021-09-14 01:44:44 字數 1551 閱讀 5143

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

思路一:

利用正規表示式,對字串中的每個字元進行判斷分析

思路二:

利用自身的格式校驗

思路三:

對字串中的每個字元進行判斷分析

e(e)後面只能接數字,並且不能出現2次

對於+、-號,只能出現在第乙個字元或者是e的後一位

對於小數點,不能出現2次,e後面不能出現小數點

package array;

/** * 表示數值的字串

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

* 但是"12e","1a3.14","1.2.3","+-5"和"12e+4.3"都不是。

*/public class solution41 ;

system.out.println(solution41.isnumeric_3(str));

}/**

* 對字串中的每個字元進行判斷分析

** @param str

* @return

*/public boolean isnumeric_3(char str) else if (str[i] == '+' || str[i] == '-') else if (str[i] == '.') else if (str[i] < '0' || str[i] > '9') // 不合法字元

return false;

}return true;

}/**

* 系統自身的校驗機制

** @param str

* @return

*/public boolean isnumeric_2(char str) catch (numberformatexception e)

return true;

}/**

* 利用正規表示式

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

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

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

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

** @param str

* @return

*/public boolean isnumeric(char str)

}

posted @

2018-04-08 09:36

武培軒 閱讀(

...)

編輯收藏

劍指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 都不是。本題考查對字串的程式設計能力,我們需要從不同型別的數值中分析規律,要全面考慮數值整數,小數,指...