题目
请实现一个函数用来判断字符串是否表示数值(包括整数和小数)。例如,字符串”+100″,”5e2″,”-123″,”3.1416″和”-1E-16″都表示数值。 但是”12e”,”1a3.14″,”1.2.3″,”+-5″和”12e+4.3″都不是。
解题思路
我们需要设定消息树机制,来记录”e/E“、”+/-“、”.“是否出现过。
分别来制定:
1、如果是“+/-”:、
可以出现的位置:
字符串开始的位置;
不可以出现的位置:
第一次的时候,出现在不是字符串的首位置,而且前面也不是“e/E”;
第二次出现的时候,没有出现在“e/E”后面,即“+/-”的前面不是“e/E”.
2、如果是“e/E”:
不可以出现的地方:
如果它的后面不接任何数字,就不符合规则;
如果出现多个“e/E”也不符合规则。
对于“.”: 出现多个“.”是不符合规则的。
还有“e/E”的字符串出现“.”也是不符合规则的。
3、保证其他的数字是0-9之间的数字。
测试用例
1.功能测试(正负数;含整数与不含整数部分;含与不含小数部分;含与不含指数部分;不匹配情况)
2.特殊测试(null,空字符串)
代码
总结
1、考虑问题要全面
2、