請實現乙個函式用來判斷字串是否表示數值(包括整數和小數)。例如,字串"+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...