47.表示数值的字符串
题目内容:
代码及思路:
判断字符串是否表示的是数值,要满足以下几点:
1.判断第一位符号位(只有第一位和含e指数的下一位可能含符号,其他不可能)
2.小数点只可能出现在整数部分且只可能出现1次
3.e指数后跟的是整数
#include<iostream> #include<string> using namespace std; class Solution { public: bool isNumeric(char* string) { //首先对无效输入进行判断 if (string == nullptr) return false; //判断符号位 if (*string == '+' || *string == '-') string++; if (*string == '\0') return false; //需要统计E和小数点的个数,有且仅有1个 int numofE = 0, numofdot = 0,numofInt=0; while (*string != '\0') { if (*string >='0'&&*string <= '9') { string++; numofInt++; } else if (*string == '.') { if (numofdot > 0 || numofE > 0) //没有数字就已经有小数点或者指数,该字符串肯定不是数值 return false; string++; numofdot++; } else if (*string == 'e' || *string == 'E') //与小数点时的判断思路一致 { if (numofInt == 0 || numofE > 0) return false; string++; numofE++; //如果紧跟着正负号 if (*string == '+' || *string == '-') { string++; } if (*string == '\0') //没有跟数字 return false; } else return false; } return true; } }; void main() { Solution* object = new Solution; string str1; getline(cin, str1); char*string = &str1[0]; bool res = object->isNumeric(string); cout << res << endl; }
