剑指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)

大家都在看

  • 使用Foxit Reader实现批量打印以及一页多版设置技巧

    阅文时长 | 0.36分钟字数统计 | 587.2字符主要内容 | 1、引言&背景 2、批量打印软件 3、Foxit Reader设置一页多版 4、声明与参考资料『使用Fo…

    Linux 2023年6月14日
    0119
  • Linux 目录挂载服务

    Linux 服务器挂载文件目录通常有三种形式,手动挂载、自动挂载、Autofs 自动挂载,下面对这三个挂载做一下介绍,接受一下这三个区别以及使用场景: 准备服务器和客户端: ser…

    Linux 2023年6月6日
    097
  • VMware服务关闭后一定要重启

    重要的事情说三遍:服务暂时关闭记得重启,服务暂时关闭记得重启,服务暂时关闭记得重启!!! VMware服务由于安装补丁的需要我暂时把服务关闭了,于是我遇到了尴尬的一幕,于是乎发现上…

    Linux 2023年6月7日
    0121
  • 2020年12月-第01阶段-前端基础-HTML CSS 项目阶段(三)

    品优购项目(三) 1. 首页制作 1). 楼层区 floor 注意这个floor 一个大盒子 包含, 不要给高度,内容有多少,算多少 2). 家用电器模块 这个模块 简单 不需要写…

    Linux 2023年6月8日
    072
  • kali linux安装后乱码的解决方法

    操作系统是5.3 解决方法是在终端执行命令: Original: https://www.cnblogs.com/wangpingcong/p/12641912.htmlAutho…

    Linux 2023年6月7日
    096
  • Java — 反射

    程序在运行中也可以获取类的变量和方法信息,并通过获取到的信息来创建对象。程序不必再编译期就完成确定,在运行期仍然可以扩展。 示例:学生类 public class Student …

    Linux 2023年6月8日
    0139
  • 初识MySQL数据库

    一 、引言 假设现在你已经是某大型互联网公司的高级程序员,让你写一个火车票购票系统,来hold住双十一期间全国的购票需求,你怎么写? 由于在同一时段抢票的人数太多,所以你的程序不可…

    Linux 2023年6月14日
    0122
  • beego 的打包问题

    使用BeeGo2.0 编译后 打包上传到服务器出现运行时问题。在app.conf配置文件开发环境改为生产环境就行了 runmode = prod Original: https:/…

    Linux 2023年6月13日
    095
  • 【k8s】kubeadm init 时报错 unknown service runtime.v1alpha2.RuntimeService

    在测试机器中准备搭建 k8s 集群,在 master 节点执行 kubeadm init 时出现报错, unknown service runtime.v1alpha2.Runti…

    Linux 2023年6月7日
    0131
  • 账号分享

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

    Linux 2023年6月8日
    0115
  • [20220909]bbed关于删除记录恢复的问题.txt

    [20220909]bbed关于删除记录恢复的问题.txt –//快下班被别人问的关于删除记录使用bbed恢复的问题,我开始以为很快讲解完,删除记录oracle仅仅打上…

    Linux 2023年6月13日
    083
  • Shell 脚本是什么?

    一个 Shell 脚本是一个文本文件,包含一个或多个命令。作为系统管理员,我们经常需要使用多个命令来完成一项任务,我们可以添加这些所有命令在一个文本文件(Shell 脚本)来完成这…

    Linux 2023年5月28日
    0102
  • SpringSecurity 新版2.7以上 快速入门

    SpringSecurity 快速入门 1、导入依赖 org.springframework.boot spring-boot-starter-security 2、测试三种权限 …

    Linux 2023年6月7日
    0111
  • Fabric2.2中的Raft共识模块源码分析

    引言 Hyperledger Fabric是当前比较流行的一种联盟链系统,它隶属于Linux基金会在2015年创建的超级账本项目且是这个项目最重要的一个子项目。目前,与Hyperl…

    Linux 2023年6月7日
    077
  • 关于连接服务器redis的教程

    第一步:下载RedisDesktopManager 这个百度一搜就有了,但是现在的版本ssh用不了建议找可以用的版本,这个百度,懂得都懂。 第二步:服务器宝塔redis设置 在配置…

    Linux 2023年6月11日
    088
  • Sublime Text 左侧不显示目录树如何解决

    方法一: 依次点击 View – Side Bar – Show Side Side点击后左侧的目录树就会显示出来了,如下图所示方法二:快捷键 Mac : …

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