【 声明:版权所有,转载请标明出处,请勿用于商业用途。 联系信箱:[email protected]】
题目描述
请实现一个函数用来判断字符串是否表示数值(包括整数和小数)。例如,字符串"+100","5e2","-123","3.1416"和"-1E-16"都表示数值。 但是"12e","1a3.14","1.2.3","+-5"和"12e+4.3"都不是。
思路
并没有什么特别的地方,我们只需要做好各种判断就可以了
class Solution { public: bool isNumeric(char* string) { if(string==nullptr) return false; if(*string=='+' || *string=='-') ++string; if(*string=='\0') return false; bool judge = true; scanDigits(&string); if(*string!='\0') { if(*string=='.') { ++string; scanDigits(&string); if(*string=='e' || *string=='E') judge = isExponential(&string); } else if(*string=='e' || *string=='E') judge = isExponential(&string); else judge = false; } return judge && (*string=='\0'); } void scanDigits(char **string) { while(**string!='\0' && **string>='0' && **string<='9') ++(*string); } bool isExponential(char **string) { if(**string!='e' && **string!='E') return false; ++(*string); if(**string=='-' || **string=='+') ++(*string); if(**string=='\0') return false; scanDigits(string); return (**string=='\0'); } };
版权声明:本文为博主原创文章,如果转载,请注明出处
时间: 2024-10-12 18:41:19