您的位置:首页 > 其它

49.表示数值的字符串

2016-05-17 21:26 169 查看
表示数值的字符串

参与人数: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;
}


当要修改指针本身的值,而不是指针指向的值的时候,要传递指针的指针。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: