剑指offer计划26(字符串中等)—java

1.1、题目1

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

1.2、解法

这题表示直接上大佬的题解把。。。。
代码太长了。有限状态自动机。
对状态机一无所知的我一脸懵

1.3、代码

class Solution {
    public boolean isNumber(String s) {
        Map[] states = {
            new HashMap<>() {{ put(' ', 0); put('s', 1); put('d', 2); put('.', 4); }}, // 0.

            new HashMap<>() {{ put('d', 2); put('.', 4); }},                           // 1.

            new HashMap<>() {{ put('d', 2); put('.', 3); put('e', 5); put(' ', 8); }}, // 2.

            new HashMap<>() {{ put('d', 3); put('e', 5); put(' ', 8); }},              // 3.

            new HashMap<>() {{ put('d', 3); }},                                        // 4.

            new HashMap<>() {{ put('s', 6); put('d', 7); }},                           // 5.

            new HashMap<>() {{ put('d', 7); }},                                        // 6.

            new HashMap<>() {{ put('d', 7); put(' ', 8); }},                           // 7.

            new HashMap<>() {{ put(' ', 8); }}                                         // 8.

        };
        int p = 0;
        char t;
        for(char c : s.toCharArray()) {
            if(c >= '0' && c

2.1、题目2

剑指 Offer 67. 把字符串转换成整数

2.2、解法

这题遍历字符串,判断首字母,从而不断赋值添加给res,这里有个小陷阱,就是要注意数的大小范围,超出范围则返回规定数的最大和最小值。

2.3、代码

class Solution {
    public int strToInt(String str) {
        int res = 0,sign = 1,bndry = Integer.MAX_VALUE / 10;;
        char []s = str.trim().toCharArray();
        int j = 1,len = s.length;
        if(len == 0 )return 0;
        if(s[0]=='-') sign=-1;
        else if(s[0]!='+') j=0;
        for(int i =j;i'9' || s[i] bndry || res == bndry && s[i] > '7') return sign == 1 ? Integer.MAX_VALUE : Integer.MIN_VALUE;
            res=res*10+(s[i]-'0');

        }
        return sign*res;
    }

}

Original: https://www.cnblogs.com/cxykhaos/p/15338356.html
Author: 程序员khaos
Title: 剑指offer计划26(字符串中等)—java

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/598460/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

  • MySQL(一)——查看密码与修改

    查看数据库密码,策略与修改 RPM安装: 源码安装: 进入:数据库 进入数据库后第一步设置密码: 查看密码策略 修改密码策略,长度 0宽容模式 混合模式,0关闭大小写 特殊字符 O…

    Linux 2023年6月13日
    087
  • 如何在 pyqt 中自定义工具提示 ToolTip

    前言 Qt 自带的工具提示样式不太好看,就算加了样式表也时不时会失效,同时工具提示没有阴影,看起来就更难受了。所以本篇博客将会介绍自定义工具提示的方法,效果如下图所示: 实现过程 …

    Linux 2023年6月7日
    0108
  • 【SHELL】在指定格式的文件中查找字符串

    在指定格式的文件中查找字符串 grep -nr "string" –include=*.{c,cpp,h} 在排除指定格式的文件中查找字符串 grep -nr…

    Linux 2023年5月28日
    0137
  • 3.20 什么是环境变量,Linux环境变量有哪些?

    变量是计算机系统用于保存可变值的数据类型,我们可以直接通过变量名称来提取到对应的变量值。在 Linux 系统中,环境变量是用来定义系统运行环境的一些参数,比如每个用户不同的家目录(…

    Linux 2023年6月7日
    0105
  • python写日志

    写日志的办法多种多样,我这个是我喜欢的办法,可以做个参考 没啥说的,直接上代码 import time def write_log(value): now_time = time….

    Linux 2023年6月6日
    091
  • 学习

    1.1、参考博客 参考的教程如下: Original: https://www.cnblogs.com/agui125/p/16032402.htmlAuthor: 风御之举Tit…

    Linux 2023年6月13日
    0104
  • Nginx/Tengine安装配置详解

    1 概念 Nginx (“engine x”) 是一个高性能的 HTTP 和 反向代理 服务器,也是一个 IMAP/POP3/SMTP 代理服务器。官方测试…

    Linux 2023年6月14日
    094
  • 经典算法学习-计算汉明权重 SWAR(SIMD within a register)

    计算汉明权重算法 SWAR(SIMD within a register) 参考文章: [1] 简书:计算汉明权重的SWAR(SIMD within a Register)算法ht…

    Linux 2023年6月6日
    081
  • WebBug Java漏洞靶场 Java代码审计

    404. 抱歉,您访问的资源不存在。 可能是网址有误,或者对应的内容被删除,或者处于私有状态。 代码改变世界,联系邮箱 contact@cnblogs.com 园子的商业化努力-困…

    Linux 2023年6月6日
    0106
  • BLACKTOAD 的模板 未完

    博客园 :当前访问的博文已被密码保护 请输入阅读密码: Original: https://www.cnblogs.com/Grharris/p/10876375.htmlAuth…

    Linux 2023年6月6日
    093
  • shell脚本中 /dev/null 的用途

    /dev/null 是一个特殊的设备文件,它丢弃一切写入其中的数据 可以将它 视为一个黑洞, 它等效于只写文件, 写入其中的所有内容都会消失, 尝试从中读取或输出不会有任何结果,同…

    Linux 2023年6月13日
    098
  • Linux下侦听端口被占用,怎么解决?

    不知道你有没有遇到过这种问题:在同一台物理机器上,服务A 启动时侦听 端口1 ,同时它也作为客户端去连接 服务B,连接服务B时候会随机一个端口号,假如随机的是 端口2 ,这个时候 …

    Linux 2023年6月13日
    099
  • Linux网络智障问题排查汇总

    Q: Linux 客户端应用接收不到组播:A: 检查客户端的 Linux 系统,可能没有配置 net.ipv4.conf.ethx.rp_filter = 0 的内核参数 Q: 在…

    Linux 2023年6月14日
    084
  • 详解Redis基本命令

    当redis环境搭建结束后,接下来需要掌握并了解redis的一些相关命令,本篇文章主要从实际操作的层面来与大家分享redis基本命令, 具体包括:Redis五大基本类型命令(Str…

    Linux 2023年5月28日
    0123
  • GIT使用说明

    1、Git入门教程 1.1:Git入门与使用 (一) Git介绍与安装 1.2:Git入门与使用 (二) Git相关命令的介绍与使用 1.3:Git入门与使用 (三) 使用GitH…

    Linux 2023年6月13日
    0110
  • WPF 已知问题 资源字典树引用与资源寻找的坑

    大家都知道,在 WPF 里面,可以让资源字典合并其他资源字典,从而定义出资源字典引用树。然而在资源字典引用树里面,如果没有理清关系,将可以作出一个超级复杂的引用关系网。如果在性能优…

    Linux 2023年6月6日
    0111
亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球