牛客oj:表示數值的字串牛客oj九度oj:未收錄
github**: 054-表示數值的字串
csdn題解:劍指offer–054-表示數值的字串
九度oj
csdn題解
github**
054-表示數值的字串
未收錄劍指offer–054-表示數值的字串
054-表示數值的字串
請實現乙個函式用來判斷字串是否表示數值(包括整數和小數)。例如,
字串」+100」,」5e2」,」-123」,」3.1416」和」-1e-16」都表示數值。
但是」12e」,」1a3.14」,」1.2.3」,」+-5」和」12e+4.3」都不是。
我們首先分析一下子可能是數值的字串的格式
在數值之前可能有乙個表示正負的』-『或者』+』。
接下來是若干個0到9的數字表示數值的整數部分(在某些小數里可能沒有數值的整數部分)。
如果數值是乙個小數,那麼在小數點後面可能會有若干個0到9的數字表示數值的小數部分。如果數值用科學計數法表示,接下來是乙個』e』或者『e』,以及緊跟著的乙個整數(可以有正負號)表示指數。
判斷乙個字串是否符合上述模式時,
* 首先看第乙個字元是不是正負號。
* 如果是,在字串上移動乙個字元,繼續掃瞄剩餘的字串中0到9的數字。
* 如果是乙個小數,則將遇到小數點。
* 另外,如果是用科學計數法表示的數值,在整數或者小數的後面還有可能遇到』e』或者』e』。
#include
using
namespace
std;
// 除錯開關
#define __tmain main
#ifdef __tmain
#define debug cout
#else
#define debug 0 && cout
#endif // __tmain
class solution
// 可能遇見符號+/-
if(*str == '+' || *str == '-')
if(*str == '\0')
bool numberic = true;
// 處理可能遇見的數字
scandigits(&str);
if(*str != '\0')
}else
if(*str == 'e' || *str == 'e')
else
}return numberic && *str == '\0';
}void scandigits(char **str)
}bool i***ponential(char **str)
++(*str);
if(**str == '+' || **str == '-')
if(**str == '\0')
scandigits(str);
return (**str == '\0') ? true : false;
}};int __tmain( )
劍指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 都不是。本題考查對字串的程式設計能力,我們需要從不同型別的數值中分析規律,要全面考慮數值整數,小數,指...