首页 > 程序开发 > 软件开发 > 其他 >

《剑指offer》表示数值的字符串

2015-09-14

题目描述 请实现一个函数用来判断字符串是否表示数值(包括整数和小数)。例如,字符串+100,5e2,-123,3 1416和-1E-16都表示数值。 但是12e,1a3 14,1 2 3,+-5和12e+4 3都不是。 思路 并没有什么特别的地方,我

题目描述
请实现一个函数用来判断字符串是否表示数值(包括整数和小数)。例如,字符串+100,5e2,-123,3.1416和-1E-16都表示数值。 但是12e,1a3.14,1.2.3,+-5和12e+4.3都不是。

思路
并没有什么特别的地方,我们只需要做好各种判断就可以了

class Solution
{
	public:
		bool isNumeric(char* string)
		{
			if(string==nullptr)
				return false;
			if(*string=='+' || *string=='-')
				++string;
			if(*string=='')
				return false;
			bool judge = true;
			scanDigits(&string);
			if(*string!='')
			{
				if(*string=='.')
				{
					++string;
					scanDigits(&string);
					if(*string=='e' || *string=='E')
						judge = isExponential(&string);
				}
				else if(*string=='e' || *string=='E')
					judge = isExponential(&string);
				else
					judge = false;
			}
			return judge && (*string=='');
		}
		void scanDigits(char **string)
		{
			while(**string!=&#39;&#39; && **string>=&#39;0&#39; && **string<=&#39;9&#39;)
				++(*string);
		}
		bool isExponential(char **string)
		{
			if(**string!=&#39;e&#39; && **string!=&#39;E&#39;)
				return false;
			++(*string);
			if(**string==&#39;-&#39; || **string==&#39;+&#39;)
				++(*string);
			if(**string==&#39;&#39;)
				return false;
			scanDigits(string);
			return (**string==&#39;&#39;);
		}

};


相关文章
最新文章
热点推荐