表示数值的字符串

    xiaoxiao2025-07-26  9

    题目描述

    请实现一个函数用来判断字符串是否表示数值(包括整数和小数)。例如,字符串"+100","5e2","-123","3.1416"和"-1E-16"都表示数值。 但是"12e","1a3.14","1.2.3","+-5"和"12e+4.3"都不是。

    题目分析:

    这道题主要是对所有可能出现的情况进行完整的分析以及解答。

    比如str是否为空,小数点的位置以及个数,e/E出现的位置以及紧跟着的后一个字符,+ -号的判断,等等

    代码:

    class Solution { public: bool isNumeric(char* string) { if(string==NULL)return false; bool point=false;//小数点 char mm=' ';//正负号 bool result=true;//结果 bool E=false; int i=0; while((string[i]!='\0')&&(result)) { if(string[i]=='+'||string[i]=='-')//正负号的判断 { if(mm!=' '||i!=0)return false;//漏。开始的时候这里没有思考全面 mm=string[i]; i++; continue; } //把0到最后拿出来一个一个比较 if(string[i]>='0'&&string[i]<='9') { i++; } else if(string[i]=='e'||string[i]=='E')// E/e的判断 { if(E==true) return false; E=true; i++; if(string[i]=='+'||string[i]=='-')// { i++; } if(string[i]=='\0')//漏,开始没有思考这点 return false; } else if(string[i]=='.') { if(point==true)return false;// else if(E==true)return false; else { point=true; i++; } } else //值为其他的,直接返回false { return false; } } return true; } }; 【个人总结】

    写代码之前先把可能的情况都罗列完全,然后再整理思路写代码,而且题目中给的情况很大可能是不完全的,像1.2e这种情况也要考虑到!

    转载请注明原文地址: https://ju.6miu.com/read-1301070.html
    最新回复(0)