劍指offer 53 表示數值的字串

2021-08-24 20:37:37 字數 1629 閱讀 6423

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

本題的主要解題思路如下:

首先判斷字串是否為空,或者首元素是否為『.』,若是是則直接返回false;

否則,判斷首元素是否為『+』或者『-』,若是則將迴圈變數賦值為i=1,否則則將迴圈變數賦值為i=0;

初始化flag=true,之後開始遍歷整個字串,若字元為大小寫的字母(不包含『e』和『e』),則flag=false並終止遍歷,

否則,若字元為『+』或『-』,則flag=false並終止遍歷,若字元為『0』到『9』的數字,則接著遍歷字串,若字元為『.』且第一次出現,小數點計數器cnt++,否則flag=false並終止遍歷,若字元為『e』或者『e』,那麼判斷後面字元子串是否為數字,並結束遍歷。

#include

#include

using

namespace std;

class

solution

bool flag1 =

true

;for

(; j < length ; j++

)elseif(

(str[j]

>=

'a'&& str[j]

<=

'z')

||(str[j]

>=

'a'&& str[j]

<=

'z')

)else

if(str[j]

=='+'

|| str[j]

=='-'

)else

if(str[j]

>=

'0'|| str[j]

<=

'9')

}return flag1;

}bool

isnumeric

(char

* string)

int len =

strlen

(string)

;bool flag =

true

;int cnt1 =0;

// 小數點個數

int i =0;

// 迴圈變數

if(string[0]

=='+'

|| string[0]

=='-'

)for

(;i < len ; i++

)else

else

if(string[i]

>=

'0'&& string[i]

<=

'9')

else

if(string[i]

=='.'

)else

}else

if(string[i]

=='e'

|| string[i]

=='e'

)else}}

}return flag;}}

;int

main()

return0;

}

劍指offer 53 表示數值的字串

題目描述 請實現乙個函式用來判斷字串是否表示數值 包括整數和小數 例如,字串 100 5e2 123 3.1416 和 1e 16 都表示數值。但是 12e 1a3.14 1.2.3 5 和 12e 4.3 都不是。輸出描述 true 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...