【LeetCode】剑指 Offer 20. 表示数值的字符串

文章目录

  • 【LeetCode】剑指 Offer 20. 表示数值的字符串


package offer;import java.util.HashMap;public class Solution20 {public static void main(String[] args) {Solution20 solution = new Solution20();String s = "12e+5.4";System.out.println(solution.method(s));}public boolean method(String s){HashMap[] states = {new HashMap<Character, Integer>() {{ put(' ', 0); put('s', 1); put('d', 2); put('.', 4); }},new HashMap<Character, Integer>() {{ put('d', 2); put('.', 4); }},                           new HashMap<Character, Integer>() {{ put('d', 2); put('.', 3); put('e', 5); put(' ', 8); }},new HashMap<Character, Integer>() {{ put('d', 3); put('e', 5); put(' ', 8); }},new HashMap<Character, Integer>() {{ put('d', 3); }},new HashMap<Character, Integer>() {{ put('s', 6); put('d', 7); }},new HashMap<Character, Integer>() {{ put('d', 7); }},new HashMap<Character, Integer>() {{ put('d', 7); put(' ', 8); }},new HashMap<Character, Integer>() {{ put(' ', 8); }}};int p = 0;char t;for(char c : s.toCharArray()) {if(c >= '0' && c <= '9') t = 'd';else if(c == '+' || c == '-') t = 's';else if(c == 'e' || c == 'E') t = 'e';else if(c == '.' || c == ' ') t = c;else t = '?';if(!states[p].containsKey(t)) return false;p = (int)states[p].get(t);}return p == 2 || p == 3 || p == 7 || p == 8;}
}//时间复杂度为 O(n)
//空间复杂度为 O(1)

【LeetCode】剑指 Offer 20. 表示数值的字符串相关推荐

  1. leetcode剑指 Offer 20. 表示数值的字符串

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

  2. 【LeetCode笔记】剑指 Offer 20. 表示数值的字符串(Java、字符串)

    文章目录 题目描述 思路 && 代码 题目描述 呃-比较恶心的一道题,需要读好题,分完情况再下手 有看到dalao用有限状态机来做,不过这边还是直接用了我自己的做法= = 思路 &am ...

  3. 剑指offer:表示数值的字符串

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

  4. 剑指offer:表示数值的字符串cpp题解:指针

    文章目录 题目来源 分析 题意:需要判断是小数和科学计数法. 这里的奇淫巧计是:e之前必须是数(小数或者整数):e后面需要是整数(可以有符号位) 这就启发我们:用一个指针i,从前往后遍历,确定是否是数 ...

  5. 剑指offer之表示数值的字符串

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

  6. Leetcode 剑指 Offer 58 - II. 左旋转字符串 (每日一题 20210830)

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

  7. Leetcode 剑指 Offer 58 - II. 左旋转字符串 LCOF - Python

    class Solution:def reverseLeftWords(self, s: str, n: int) -> str:m = len(s)temp = list(s)temp.ext ...

  8. leetcode 打印_剑指 Offer 总结 - leetcode 剑指offer系列

    剑指 Offer 系列完结撒花!! 本篇文章是对整个系列的精华总结, 对系列的每篇文章进行了分类, 并用一句话概括每道题的思路, 方便大家理解和记忆, 当然也包含原文完整链接供大家参考 总的来说, 写 ...

  9. 【LeetCode 剑指offer刷题】数组题2:57 有序数组中和为s的两个数(167 Two Sum II - Input array is sorted)...

    [LeetCode & 剑指offer 刷题笔记]目录(持续更新中...) 57 有序数组中和为s的两个数 题目描述 输入一个递增排序的数组和一个数字S,在数组中查找两个数,是的他们的和正好是 ...

最新文章

  1. 不安装Oracle客户端使用PLSQL
  2. [攻防世界 pwn]——int_overflow
  3. 五、性能监视(2)Windows性能日志
  4. 25 WM配置-策略-入库策略5-定义托盘策略P(Pallet Strategy)
  5. WordPress前台后台页面打开慢的解决方法
  6. debian ubuntu 记录系统启动信息
  7. html怎么拿json数据,如何使用Python从HTML数据中提取JSON数据?
  8. Python 之 单例
  9. LVS(三)LVS集群NAT模式
  10. 自适应滤波器(二)NLMS自适应滤波器
  11. 逃出你的肖申克(五):看不见的牢笼(上)
  12. log4j2漏洞复现
  13. 信用卡葵花宝典 阅读笔记(二)
  14. Spark RDD常用算子-Transformation(Python版)
  15. Java实现 蓝桥杯 算法训练 递归求二项式系数
  16. 利用Excel数组公式统计各班优秀人数
  17. SimpleDateFormat的概述
  18. 杭电2094 产生冠军
  19. VOT 2015 Benchmark 使用教程
  20. Java 生成二维码。

热门文章

  1. checkbox 选中_纯CSS修改checkbox复选框样式
  2. 实验四 lr0分析程序的设计与实现_试验机海外直播丨实现高精度CAE分析实验的材料评价案例技术介绍...
  3. android 相机应用程序,2020年最佳Android相机的应用程序
  4. PipeCAD之管道标准库PipeStd(3)
  5. Android 手机卫士--解析json与消息机制发送不同类型消息
  6. Node.js文件操作二
  7. 各种排序算法的总结和比较(转)
  8. 怎么样自己动手写OS
  9. 终端安装解决svn cannot set LC_CTYPE locale的问题
  10. 聪明的苹果——iPhone 3GS。