题目:表示数值的字符串

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


解题:

数值错误的形式有多种多样,但是正确的符合下列规则

  • '+''-' 只能出现在字符串开头或者 'e/E' 之后
  • '.' 最多出现一次,且只能出现在 'e/E' 之前
  • 'e/E' 最多出现一次,且不能出现在开头或末尾
  • 字符串中除 '0' ~ '9''e/E''.''+''-'之外,不能出现其他字
  • 小数可以没有整数部分,例如.123等于0.123;
  • 小数点后面可以没有数字,例如233.等于233.0;
  • 小数点前面和后面可以有数字,例如233.666;
  • 当e或E前面没有数字时,整个字符串不能表示数字,例如.e1、e1;
  • 当e或E后面没有整数时,整个字符串不能表示数字,例如12e、12e+5.4;
class Solution {
public:bool isNumber(string s) {int i = 0;while (i < s.size() && s[i] == ' ') i++;int j = s.size() - 1;while (j >= 0 && s[j] == ' ') j--;if (i > j) return false;s = s.substr(i, j - i + 1);if (s[0] == '-' || s[0] == '+') s = s.substr(1);if (s.empty() || s[0] == '.' && s.size() == 1) return false;int dot = 0, e = 0;for (int i = 0; i < s.size(); i ++ ){if (s[i] >= '0' && s[i] <= '9');else if (s[i] == '.'){dot ++ ;if (e || dot > 1) return false;}else if (s[i] == 'e' || s[i] == 'E'){e ++ ;if (i + 1 == s.size() || !i || e > 1 || i == 1 && s[0] == '.') return false;if (s[i + 1] == '+' || s[i + 1] == '-'){if (i + 2 == s.size()) return false;i ++ ;}}else return false;}return true;}
};

剑指offer:面试题20. 表示数值的字符串相关推荐

  1. 剑指offer面试题[54]-表示数值的字符串

    题目描述 请实现一个函数用来判断字符串是否表示数值(包括整数和小数).例如,字符串"+100","5e2","-123","3.1 ...

  2. 剑指offer——面试题20:顺时针打印矩阵

    剑指offer--面试题20:顺时针打印矩阵 Solution1: 可参考leetCode 54题的解法 书上的思路特别好,学习之~ class Solution { public:vector< ...

  3. 剑指offer——面试题11:数值的整数次方

    剑指offer--面试题11:数值的整数次方 Solution1:基本算法 累乘,时间复杂度为O(n) 要考虑全部情况:指数 < 0, == 0 和 > 0. 注意在 if-else if ...

  4. 剑指offer——面试题42-1:左旋转字符串

    剑指offer--面试题42-1:左旋转字符串 20180906整理 Solution1: 自己最开始想出来的垃圾算法!!! class Solution {public:string LeftRot ...

  5. @ 剑指offer(python)表示数值的字符串

    剑指offer刷题笔记53(python) 题目描述 请实现一个函数用来判断字符串是否表示数值(包括整数和小数).例如,字符串"+100","5e2",&quo ...

  6. java 打印_剑指Offer面试题20(Java版):顺时针打印矩阵

    题目:输入一个矩阵,按照从外向里以顺时针的顺序依次打印出每一个数字.例如:如果输入如下矩阵: 1,2,3,4 5,6,7,8 9,10,11,12 13,14,15,16 则依次打印出数字1,2,3, ...

  7. 剑指offer面试题[20]-顺时针打印矩阵

    题目描述 输入一个矩阵,按照从外向里以顺时针的顺序依次打印出每一个数字,例如,如果输入如下矩阵: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 则依次打印出数字1,2, ...

  8. 剑指Offer - 面试题5. 替换空格(字符串)

    1. 题目 请实现一个函数,把字符串 s 中的每个空格替换成"%20". 示例 1: 输入:s = "We are happy." 输出:"We%20 ...

  9. [剑指offer]面试题第[38]题[JAVA][字符串的排列][回溯法]

    [问题描述][中等] 输入一个字符串,打印出该字符串中字符的所有排列. 你可以以任意顺序返回这个字符串数组,但里面不能有重复元素.示例: 输入:s = "abc" 输出:[&quo ...

  10. 剑指Offer - 面试题58 - II. 左旋转字符串

    1. 题目 字符串的左旋转操作是把字符串前面的若干个字符转移到字符串的尾部.请定义一个函数实现字符串左旋转操作的功能.比如,输入字符串"abcdefg"和数字2,该函数将返回左旋转 ...

最新文章

  1. ==和equals()的作用及区别
  2. python 命名管道_Python:检查命名管道是否有数据
  3. Python中operator模块的操作
  4. MIT Scheme 使用 Edwin
  5. 计算机原理课程代码二三八四,计算机原理(2012年版)课程代码:02384
  6. EventBus 使用介绍
  7. joomla2.5传统组件开发解析
  8. 利用access创建数据字典_VBA数组与字典解决方案54讲:利用字典和数组提取数据并按行回填...
  9. 基于ZStack构建深度学习云平台
  10. 分别用精密星历和广播星历计算卫星坐标 -- 对 GNSS 第一次编程的总结
  11. 区块链架构与扩容方案
  12. Microsoft Edge导出浏览历史记录
  13. 安卓电子书格式_纯干货|提升电子书阅读体验的四点感受
  14. Apollo星火计划学习笔记——第八讲Apollo控制模块解析与实践1
  15. Winserver2016安装Exchange2016总结(一堆坑)
  16. rop检查_我科成功实施首例全麻下小儿眼底荧光造影检查!
  17. 圣科车衣,给予您的爱车完美守护
  18. line-height的使用
  19. 机器人兴趣班奖状_拼音兴趣班奖状导师寄语
  20. PWM调光频率0.1-20KHz以内,共阳极控制高辉无频闪LED车灯调光电源驱动芯片方案FP7125/FP7122/FP7123

热门文章

  1. spring boot 启动不连接数据库
  2. 51单片机 小车 L298N pwm调速 串口控制 按键控制
  3. 如何更优雅地对接第三方API
  4. Jupyter Notebook 远程访问设置方法
  5. C# split 几种使用方法
  6. blackberry Jvm error 104 错误(Device Simulator)
  7. 计算机基础知识综合试卷一,计算机基础知识试题及答案a
  8. Mnist数据集简介
  9. Linux终端运行fasterrcnn,对yolo与fasterrcnn anchors的理解
  10. Php中数组sort举例,php数组排序之krsort与asort函数应用举例