49.表示数值的字符串

表示数值的字符串
  • 参与人数:1204时间限制:1秒空间限制:32768K
  • 本题知识点:  字符串
  •  算法知识视频讲解

题目描述

请实现一个函数用来判断字符串是否表示数值(包括整数和小数)。例如,字符串"+100","5e2","-123","3.1416"和"-1E-16"都表示数值。 但是"12e","1a3.14","1.2.3","+-5"和"12e+4.3"都不是。
// 48.cpp : 定义控制台应用程序的入口点。
//

#include "stdafx.h"

class Solution {
public:
	bool isNumeric(char* str) {
		bool retVal = false;
		if (str == NULL) return retVal;

		if (*str == '+' || *str == '-')
			++str;
		if (str == '\0')
			return retVal;

		scanDigital(&str);

		if (*str != '\0') {
			if (*str == '.') {
				++str;
				scanDigital(&str);
				if (*str == 'e' || *str == 'E') {
					retVal = isE(&(++str));
				}
				else if (*str == '\0'){
					retVal = true;
				}
			}
			else if (*str == 'e' || *str == 'E') {
				retVal = isE(&(++str));
			}
		}
		else {
			retVal = true;
		}


		return retVal && *str == '\0';
	}

	void scanDigital(char** str) {
		while (**str >= '0' && **str <= '9' && **str != '\0') {
			++(*str);
		}
	}

	bool isE(char** str) {
		if (**str == '+' || **str == '-') ++(*str);

		if (**str == '\0') return false;

		scanDigital(str);

		if (**str != '\0') return false;
		else return true;
	}
};
int _tmain(int argc, _TCHAR* argv[])
{
	char str[] = "3.1416";
	Solution s;
	bool result = s.isNumeric(str);
	return 0;
}

当要修改指针本身的值,而不是指针指向的值的时候,要传递指针的指针。

你可能感兴趣的:(49.表示数值的字符串)