剑指offer—表示数值的字符串
来源:互联网 发布:狼雨seo官网 编辑:程序博客网 时间:2024/06/05 07:15
华电北风吹
天津大学认知计算与应用重点实验室
日期:2015/10/13
题目描述
请实现一个函数用来判断字符串是否表示数值(包括整数和小数)。例如,字符串”+100”,”5e2”,”-123”,”3.1416”和”-1E-16”都表示数值。 但是”12e”,”1a3.14”,”1.2.3”,”+-5”和”12e+4.3”都不是。
解析:由于种类太多,题目的例子不一定能覆盖全部,就自己写吧。第一步在字符串中寻找最后一个出现的e或者E,然后根据E(e)将字符串分为e前的串和e后的串。只要判断e前的串是一个合格的浮点数,e后的是一个合格的整数即可。
class Solution {public: bool isNumeric(char* string) { int length=strlen(string); int flag=length-1; while (flag>=0) { if((string[flag]=='E')||(string[flag]=='e')) break; else flag--; } if((flag==0)||(flag==length-1)) return false; if(flag==-1) return isfloat(string); else { char* str1=new char[flag+1]; char* str2=new char[length-flag]; for(int i=0;i<length;i++) { if(i<flag) str1[i]=string[i]; if(i>flag) str2[i-flag-1]=string[i]; } str1[flag]='\0'; str2[length-flag-1]='\0'; return isfloat(str1)&&isint(str2); } } bool isfloat(char* str) { int pointcount=0; for(int i=1;i<strlen(str);i++) { if(str[i]=='.') pointcount++; else if((str[i]-'0'<0)||(str[i]-'0'>9)) return false; } if(pointcount>1) return false; else return true; } bool isint(char* str) { for(int i=1;i<strlen(str);i++) { if((str[i]-'0'<0)||(str[i]-'0'>9)) return false; } return true; }};
0 0
- 剑指offer—表示数值的字符串
- 剑指offer--表示数值的字符串
- 剑指offer 54-表示数值的字符串
- 《剑指offer》表示数值的字符串
- 剑指offer:表示数值的字符串
- 剑指Offer--054-表示数值的字符串
- 《剑指offer》:[54]表示数值的字符串
- 剑指offer-表示数值的字符串
- 《剑指offer》-表示数值的字符串
- 剑指offer 表示数值的字符串
- 剑指offer-53.表示数值的字符串
- 剑指offer:表示数值的字符串
- 剑指Offer:表示数值的字符串
- 剑指offer--表示数值的字符串
- 剑指offer--表示数值的字符串
- 剑指offer:表示数值的字符串
- 剑指Offer---表示数值的字符串
- 剑指Offer——表示数值的字符串
- [Java]Http报文详解
- Android M版本和非M版本动态权限适配方案
- 侧滑菜单的功能实现
- gson解析json
- lwip【3】LWIP ethernetif.c分析
- 剑指offer—表示数值的字符串
- 有关http的内容
- sublime3.0配置node.js环境
- Lucene 5.3 自定义同义词分词器
- 关于继承的问题
- 你的第一个Netty应用
- vim tab设置为4个空格
- keystone 认证分析
- lwip【4】 lwIP配置文件opt.h和lwipopts.h初步分析之一