【剑指】63,表示数字的字符串(写出测试用例)

题目描述
请实现一个函数用来判断字符串是否表示数值(包括整数和小数)。例如,字符串"+100",“5e2”,"-123",“3.1416"和”-1E-16"都表示数值。 但是"12e",“1a3.14”,“1.2.3”,"±5"和"12e+4.3"都不是。
思路:
其中有一个E数要注意,aEb=a*10^b.注意不能aE,大树可Ea=1Ea
按照数字组成:先正负。然后再数字/e,如果是数字,就乘以十加上,然后往后走,如果是e,判断后面正负+数字,注意有小数点。
(+/-,\0,0~9,. (个数和只能出现再e前),e/E前不能为零,后不能没有数
遇到这种先写测试用例:+,+.1 ,0e , e1.2 , e+e,e’\0’, 1…e , e+
代码:

class Solution {
public:
	  bool isNumeric(char* string)	//只是巍峨了
    {
		if(string ==nullptr)
			return false;
		if(*string =='+' ||*string=='-')
			string++;
		if(*string =='\0')	//只有一个正负号
				return false;
		int dot=0,num=0,numofe=0;
		while(*string!='\0')
		{//第一步 数字?e?小数点,不同处理方式。
			if(*string>='0' &&*stirng<='9')
				{
					string++;
					num=1;
						
				}
				else if(*string=='.')
				{//是点了
					if(dot>0 ||numofe>0)	//最多一个点。且如果有e,e后面不能是小数点
						return false;
					string++;
					dot++;
				}	//来e了
				else if(*string==‘e' ||*string=='E')
				{	//e的规则:前面不能为零,后面不能有小数点只能有一个小数点
				if(num==0 || numofe>0)
					return false;
					
				string++;
				if(*string=='\0')
					return false;		//e后面不能没有
				if(*string =='+'|| *string=='-')		//加号后面也可能没有。
					{
					string++;
					if(*string=='\0')
						return false;
					}
					
				}
				else
					return false;		//出现其他字符
		}
		return true//上述是直到’\0‘退出循环
	}



}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值