剑指offer第53题:表示数值的字符串
2019-08-25 15:27
344 查看
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/qq_42847793/article/details/100033220
源码
剑指offer第53题:表示数值的字符串
题目描述
表示数值的字符串
请实现一个函数用来判断字符串是否表示数值(包括整数和小数)。例如,字符串"+100",“5e2”,"-123",“3.1416"和”-1E-16"都表示数值。 但是"12e",“1a3.14”,“1.2.3”,"±5"和"12e+4.3"都不是。
源码
class Solution { public: bool isConNum(char str[],int l,int r)//判断为是否为不带符号的数字 { for(int i=l;i<=r;i++) { if(str[i]<'0' || str[i]>'9') return false; } return true; } bool isPositiveInteger(char str[],int l,int r)//判断是否为正整数或零 { if(l == r ) { if(str[l]>='0' && str[l]<='9') return true; return false; } if(str[l] == '+') { return isConNum(str,l+1,r); } else { return isConNum(str,l,r); } } bool isNegativeInteger(char str[],int l,int r)//判断是否为负整数 { if(str[l] == '-') { return isConNum(str,l+1,r); } return false; } bool isInteger(char str[],int l,int r) { return isPositiveInteger(str,l,r) ||isNegativeInteger(str,l,r); } bool isSmallNumber(char str[],int l ,int r)//判断是否是为小数 { int ind_point = 0;//记录第一个小数点出现的位置; for(int i = l;i<=r;i++) { if(str[i]=='.') { ind_point = i; break; } } if(ind_point == l || ind_point == r)//若小数点出现在首尾,则不是小数 { return false; } //若出现在字符串中间,则判断其左侧是否为整数且右侧为不带符号的整数。 return isInteger(str,l,ind_point-1)&&isConNum(str,ind_point+1,r); } bool isFE(char str[],int l,int r) { int ind_e = 0; for(int i = l;i<= r;i++) { if(str[i] == 'e'|| str[i] == 'E') { ind_e = i; break; } } if(ind_e == l || ind_e == r)//若e出现在首尾,则不是PE. { return false; } //若e出现在字符串中间,则判断其左侧是否为整数且右侧为整数 return (isInteger(str,l,ind_e-1)||isSmallNumber(str,l,ind_e-1))&&isInteger(str,ind_e+1,r); } bool isNumeric(char* string) { int size = 0; char * p = string; while(*p != '\0') { p++; size++; } if(size == 0) return false; return isInteger(string,0,size-1)||isSmallNumber(string,0,size-1)||isFE(string,0,size-1); } };
相关文章推荐
- 【剑指Offer学习】【面试题54:表示数值的字符串】
- 剑指offer(50)-表示数值的字符串
- 剑指offer--面试题20:表示数值的字符串
- 剑指offer-[表示数值的字符串]-JavaScript实现
- 剑指offer - 表示数值的字符串
- (C++)剑指offer-53:表示数值的字符串(字符串)
- 剑指Offer-20:表示数值的字符串
- 剑指offer | 训练题52:表示数值的字符串
- 剑指offer--53.表示数值的字符串
- 剑指offer--表示数值的字符串
- 剑指offer 表示数值的字符串
- 剑指Offer——表示数值的字符串
- 【剑指Offer】面试题54:表示数值的字符串
- 剑指offer-面试题54:表示数值的字符串
- 剑指offer-53.表示数值的字符串
- 17表示数值的字符串--剑指offer,java版
- 剑指offer-表示数值的字符串
- 18、表示数值的字符串——剑指offer
- 剑指 offer第20题-表示数值的字符串
- 剑指offer-----判断字符串是否表示数值(java版)