1. 程式人生 > 其它 >C# 泛型玩法1

C# 泛型玩法1

技術標籤:java演算法

題目 劍指 Offer 20. 表示數值的字串

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

思路

分情況判斷

複雜度分析

時間:O(n)
空間: O(1)

程式碼

class Solution {
    public boolean
isNumber(String s) { if(s == null || s.length() == 0) { return false; } s = s.trim();// 去除前後空格 boolean numSeen = false; boolean dotSeen = false; boolean eSeen = false; for(int i = 0; i < s.length(); ++i) { char c = s.charAt
(i); if(c >= '0' && c <= '9') { numSeen = true; } else if (c == '.') { // .前不能有e或. if(dotSeen || eSeen) { return false; } dotSeen = true; } else if (c == 'e' || c == 'E'
) { //e前不能有e,且要為數字 if(eSeen || !numSeen) { return false; } eSeen = true; numSeen = false; // e的後面也要是數字,排除123e+ } else if (c == '+' || c == '-') { // +或-只能出現再開頭或者e的後面(+/-前面必須要為e) if (i != 0 && (s.charAt(i - 1) != 'e' && s.charAt(i - 1) != 'E')) { return false; } } else { return false; } } return numSeen; } }

結果

在這裡插入圖片描述