劍指Offer 表示數值的字串

2021-08-13 23:38:30 字數 881 閱讀 3036

【題目】

請實現乙個函式用來判斷字串是否表示數值(包括整數和小數)。例如,字串 「+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表示有(或無)符號位的數字,b表示無符號位的數字。在小數里可能沒有整數部分。例如:.123等於0.123。因此,a部分不是必須的。如果乙個數沒有整數部分,那麼它的小數部分不能為空。

遍歷字串,首先找到滿足條件的a部分(可能不存在);如果遇到 『.』,則開始尋找滿足條件的b部分。如果遇到 『e』或者 『e』,則開始尋找滿足條件的c部分。如果前面的部分能組成數字,最後判斷字串是否已經到達結尾即可。

【**實現】

class solution 

bool isnum = scaninteger(&string);

if(*string == '.')

if(*string == 'e' || *string == 'e')

return isnum && *string == '\0';

}bool scanunsignedinteger(char** str)

return *str > before;

}bool scaninteger(char** str)

return scanunsignedinteger(str);

}};

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

劍指Offer 表示數值的字串

請實現乙個函式用來判斷字串是否表示數值 包括整數和小數 例如,字串 100 5e2 123 3.1416 和 1e 16 都表示數值。但是 12e 1a3.14 1.2.3 5 和 12e 4.3 都不是。思路一 利用正規表示式,對字串中的每個字元進行判斷分析 思路二 利用自身的格式校驗 思路三 對...