剑指offer | 20.表示数值的字符串 2023-01-01 08:00 53阅读 0赞 **题目:** > 请实现一个函数用来判断字符串是否表示数值(包括整数和小数)。例如,字符串"+100"、“5e2”、"-123"、“3.1416”、"-1E-16"、“0123"都表示数值,但"12e”、“1a3.14”、“1.2.3”、"±5"及"12e+5.4"都不是。 -------------------- **思路:** 这题有点繁琐,而且容易考虑不全,于是参考:[题解-C++逐字符检查][-C] **用四个变量区分状态:hasNum,hasOp,hasE,hasDot** 代码结构如下: 1.while循环1号--略去前置空格 2.while循环2号--逐字符操作 0-9 hasNum置1 e/E hasE置1,E前应该hasNum,后面是新的数字,其他三项置0 +/- hasOp置1,+/-应该出现在数字首部 . hasDot置1,点不能出现在e/E之后 空格 break other 不应该含有其他字符 3.while循环3号--略去后置空格 4.判断hasNum并且下标移动到了字符串末尾 **代码:** class Solution { public: bool isNumber(string s) { int n = s.size(); int index = -1; bool hasDot = false,hasE = false,hasOp = false,hasNum = false; while(index<n && s[++index]==' '); while(index<n){ if('0'<=s[index] && s[index]<='9'){ hasNum = true; }else if(s[index]=='e' || s[index]=='E'){ if(hasE || !hasNum) return false; hasE = true; hasOp = false;hasDot = false;hasNum = false; }else if(s[index]=='+' || s[index]=='-'){ if(hasOp || hasNum || hasDot) return false; hasOp = true; }else if(s[index]=='.'){ if(hasDot || hasE) return false; hasDot = true; }else if(s[index]==' '){ break; }else{ return false; } ++index; } while(index<n && s[++index]==' '); return hasNum && index==n; } }; ![在这里插入图片描述][watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzQzMTQ1OTI2_size_16_color_FFFFFF_t_70] [-C]: https://leetcode-cn.com/problems/biao-shi-shu-zhi-de-zi-fu-chuan-lcof/solution/czhu-zi-fu-jian-cha-by-snowd/ [watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzQzMTQ1OTI2_size_16_color_FFFFFF_t_70]: /images/20221120/345795d42aa84441aa57512e01a9f95d.png
相关 剑指 Offer 20. 表示数值的字符串【2】 > 难度等级:中等 > 上一篇算法: > > [ 剑指 Offer 50. 第一个只出现一次的字符【字符串】][_ Offer 50.] > 力扣此题地址: > > [ 太过爱你忘了你带给我的痛/ 2023年09月26日 11:38/ 0 赞/ 11 阅读
相关 剑指offer | 20.表示数值的字符串 题目: > 请实现一个函数用来判断字符串是否表示数值(包括整数和小数)。例如,字符串"+100"、“5e2”、"-123"、“3.1416”、"-1E-16"、“0123"都 骑猪看日落/ 2023年01月01日 08:00/ 0 赞/ 54 阅读
相关 剑指 Offer 20. 表示数值的字符串 题目: 请实现一个函数用来判断字符串是否表示数值(包括整数和小数)。例如,字符串"+100"、“5e2”、"-123"、“3.1416”、"-1E-16"、“0123"都表 た 入场券/ 2022年12月07日 12:06/ 0 赞/ 76 阅读
相关 剑指 Offer 20. 表示数值的字符串 题目: [剑指 Offer 20. 表示数值的字符串][Offer 20.] ![在这里插入图片描述][20200831224235773.png_pic_cente 秒速五厘米/ 2022年12月02日 15:25/ 0 赞/ 64 阅读
相关 【剑指Offer】20. 表示数值的字符串 [NowCoder][] 题目描述 true "+100" "5e2" "-123" "3.1416" "-1 ゝ一世哀愁。/ 2022年11月25日 11:50/ 0 赞/ 79 阅读
相关 【剑指 Offer 20】js 表示数值的字符串 表示数值的字符串 题目 请实现一个函数用来判断字符串是否表示数值(包括整数和小数)。例如,字符串"+100"、“5e2”、"-123"、“3.1416”、"-1E- 柔光的暖阳◎/ 2022年10月29日 15:35/ 0 赞/ 70 阅读
相关 【剑指offer】面试题20:表示数值的字符串 完整代码地址 [完整代码地址][Link 1] 题目 请实现一个函数用来判断字符串是否表示数值(包括整数和小数)。 例如,字符串”+100”,”5e2”,”- ╰半橙微兮°/ 2022年06月12日 12:11/ 0 赞/ 113 阅读
相关 剑指Offer-表示数值的字符串 题目描述 请实现一个函数用来判断字符串是否表示数值(包括整数和小数)。例如,字符串"+100",“5e2”,"-123",“3.1416"和”-1E-16"都表示数值。 柔光的暖阳◎/ 2022年04月24日 11:16/ 0 赞/ 113 阅读
相关 【剑指offer】面试题20:表示数值的字符串 > 题目:请实现一个函数用来判断字符串是否表示数值(包括整数和小数)。例如,字符串 ”+100”、”5e2”、”-123”、”3.1416”和”-1E-16”都表示数 系统管理员/ 2022年03月30日 12:56/ 0 赞/ 153 阅读
相关 表示数值的字符串-剑指offer 题目描述 请实现一个函数用来判断字符串是否表示数值(包括整数和小数)。例如,字符串"+100","5e2","-123","3.1416"和"-1E-16"都表示数值。 但是 古城微笑少年丶/ 2021年12月12日 07:04/ 0 赞/ 265 阅读
还没有评论,来说两句吧...