【剑指offer】表示数值的字符串
题目链接:表示数值的字符串
题意:请实现一个函数用来判断字符串是否表示数值(包括整数和小数)。例如,字符串"+100","5e2","-123","3.1416"和"-1E-16"都表示数值。 但是"12e","1a3.14","1.2.3","+-5"和"12e+4.3"都不是。
题解:这个就是模拟。判断一下字符出现满足的条件。
小数点:在此之前没有出现过小数点,并且不是用科学计数法。
e/E:说明是科学计数法,并且一个字符串中只能有一个e/E
正负号:字符串开头做判断。
代码:
1 class Solution { 2 public: 3 bool isNumeric(char* string) 4 { 5 if(string == NULL) return false; 6 if(*string == '+' || *string == '-') string++; 7 if(*string == '\0') return false; 8 bool num = false, e = false, point = false; 9 while(*string != '\0'){ 10 //判断数字 11 if(*string >='0' && *string <='9'){ 12 num = true; 13 string++; 14 } 15 else if(*string == '.'){ //小数点 16 if(point || e) return false; 17 string++; 18 point = true; 19 } 20 else if(*string == 'e' || *string == 'E'){ //科学计数法 21 if(e || !num) return false; 22 string++; 23 e = true; 24 if(*string == '+' || *string == '-') string ++; 25 if(*string == '\0') return false; 26 } 27 else return false; 28 } 29 return true; 30 } 31 32 };