面试题62:表示数值的字符串
来源:互联网 发布:黑米软件跑路 编辑:程序博客网 时间:2024/06/08 18:04
题目:
请实现一个函数用来判断字符串是否表示数值(包括整数和小数)。
例如,字符串“+100”、“5e2”、“-123”、“3.1416”及“-1E-16”都表示数值,
但"12e"、“1a3.14”、“1.2.3”、“+-5”及“12e+5.4”都不是。
思路:
表示数值的字符串遵循如下模式:
[sign]integral-digits[.[fractional-digits]][e|E[sign]exponential-digits],'['和']'之间为可有可无的部分。
#include <iostream> #include <vector> using namespace std;void ScanDigits(char **str) //因为此处要改变str{while (**str != '\0'&&**str >= '0'&&**str <= '9') ++(*str);}bool IsExponential(char **str){if (**str != 'e'&&**str != 'E') return false;++(*str);if (**str == '-' || **str == '+') ++(*str);if (**str == '\0') return false;ScanDigits(str);return (**str == '\0');}bool IsNumberic(char *str){if (str == NULL) return false;if (*str == '+' || *str == '-') ++str;if (*str == '\0') return false;bool numeric = true;ScanDigits(&str);if (*str != '\0'){if (*str == '.') //小数{++str;ScanDigits(&str);if (*str == 'e' || *str == 'E')numeric = IsExponential(&str);}else if (*str == 'e' || *str == 'E') //整数{numeric = numeric = IsExponential(&str);}else numeric = false;}return numeric && *str == '\0';}int main(){cout << IsNumberic("+100.e-123") << endl;return 0;}
0 0
- 面试题62:表示数值的字符串
- 面试题54:表示数值的字符串
- 面试题54:表示数值的字符串
- 面试题54:表示数值的字符串
- 面试题55. 表示数值的字符串
- 面试题54. 表示数值的字符串
- 【剑指Offer学习】【面试题54:表示数值的字符串】
- 面试题54——表示数值的字符串
- 剑指offer-面试题54:表示数值的字符串
- 剑指offer--面试题54:表示数值的字符串
- 剑指Offer面试题54:表示数值的字符串
- 剑指offer-面试题54-表示数值的字符串
- 【剑指Offer】面试题54:表示数值的字符串
- 剑指offer--面试题20:表示数值的字符串
- 【剑指offer】面试题20:表示数值的字符串
- 剑指offer面试题[54]-表示数值的字符串
- 《剑指Offer》学习笔记--面试题54:表示数值的字符串
- 剑指Offer 面试题20:表示数值的字符串 Java代码实现
- continue3.php
- ARM指令集—SWP指令
- Java进阶:ThreadPoolExecutor机制
- JSPatch 实现原理详解
- 详解C#利用DataTable导出Excel
- 面试题62:表示数值的字符串
- Javascipt的作用
- 使用Maven+Nexus+Jenkins+Svn+Tomcat+Sonar搭建持续集成环境(二)
- Linux tree命令
- 排序算法
- Ubuntu下配置XX-net问题总结
- Android项目中如何用好构建神器Gradle?
- Harris角点检测
- 64. Minimum Path Sum