首页 > 编程语言 >Java | Leetcode Java题解之第8题字符串转换整数atoi

Java | Leetcode Java题解之第8题字符串转换整数atoi

时间:2024-04-04 18:30:04浏览次数:29  
标签:end String int 题解 number new atoi ans Java

题目:

题解:

class Solution {
    public int myAtoi(String str) {
        Automaton automaton = new Automaton();
        int length = str.length();
        for (int i = 0; i < length; ++i) {
            automaton.get(str.charAt(i));
        }
        return (int) (automaton.sign * automaton.ans);
    }
}

class Automaton {
    public int sign = 1;
    public long ans = 0;
    private String state = "start";
    private Map<String, String[]> table = new HashMap<String, String[]>() {{
        put("start", new String[]{"start", "signed", "in_number", "end"});
        put("signed", new String[]{"end", "end", "in_number", "end"});
        put("in_number", new String[]{"end", "end", "in_number", "end"});
        put("end", new String[]{"end", "end", "end", "end"});
    }};

    public void get(char c) {
        state = table.get(state)[get_col(c)];
        if ("in_number".equals(state)) {
            ans = ans * 10 + c - '0';
            ans = sign == 1 ? Math.min(ans, (long) Integer.MAX_VALUE) : Math.min(ans, -(long) Integer.MIN_VALUE);
        } else if ("signed".equals(state)) {
            sign = c == '+' ? 1 : -1;
        }
    }

    private int get_col(char c) {
        if (c == ' ') {
            return 0;
        }
        if (c == '+' || c == '-') {
            return 1;
        }
        if (Character.isDigit(c)) {
            return 2;
        }
        return 3;
    }
}

标签:end,String,int,题解,number,new,atoi,ans,Java
From: https://blog.csdn.net/m0_57195758/article/details/137337109

相关文章

  • Java | Leetcode Java题解之第7题整数反转
    题目:题解:classSolution{publicintreverse(intx){intrev=0;while(x!=0){if(rev<Integer.MIN_VALUE/10||rev>Integer.MAX_VALUE/10){return0;}intdigit=x......
  • 第01章 JavaWeb基础
    B/S架构是Brower/Server的缩写,即浏览器/服务器结构。在这种结构中,客户端不需要开发任何用户界面,而是通过浏览器(如IE,Firefox,Chrome,Safari等等)向服务器发送请求,由服务器进行处理后将响应结果返回浏览器,最后浏览器将结果内容展示出来。我们写的JavaWeb程序是在服务器端运行的。W......
  • 如何学好Java后端呢?
    一,如何学好Java后端呢?对于学习路线的话,我说⼀条我⽐较推荐的,我相信照着这条学习路线来你的学习效率会⾮常⾼。下⾯提到的书籍以及相关学习视频都答主已经整理好,公众号JavaGuide后台回复关键“1”即可领取。1.掌握Java基础知识(可以看《Java核⼼技术卷1》或者《HeadFirst......
  • Java登陆第三十七天——VUE3响应式基础、条件渲染、列表渲染
    响应式数据什么是响应式数据? 当数据发生改变时,DOM树的内容,会和数据同步更新。 vue3不是自动响应式数据,需要经过函数处理得到响应式数据对象。ref和reactive这两个函数都会返回响应式数据对象,但也有不同。refref通常用于将一个基本类型转为响应式数据对象。基本类型包括:数......
  • JAVA语言学习-Day3
    参考教学视频:秦疆Day3面向对象什么是面向对象面向过程:第一步做什么,第二步做什么面向对象:分类的思维模式,分类然后对某个分类下的细节进行面向过程的思索(以类的形式组织代码,以对象的方式组织(封装)数据)static:和类一起加载构造器必须和类的名字相同必须没有返回值类型,也不......
  • 03-Java框架FTPClient 使用rename()移动文件和文件重命名
    1需求由于业务种种原因,现在需要将ftp中已存文件移动到其它文件夹。2初始策略一开始走上弯路,直接翻看FTPClientAPI有无move方法,但没发现:于是曲线救国,想着采用先复制、再删除,伪代码:InputStreaminputStream=ftpClient.retrieveFileStream("/AAA/test.txt");ftpClient.st......
  • 洛谷p1002题解
    [NOIP2002普及组]过河卒题目描述棋盘上AAA点有一个过河卒,需要走到目标BB......
  • Java 程序执行过程
    Java程序的执行过程Tips:对于java程序的执行的过程,参考了两张图片来理解,并主要参照图2进行讲解!(这里不对具体的内容进行详细讲解,对于具体的内容,将给出参考的链接)图1:JVMModel图2:Java运行流程java的执行可以分为编译和运行两个阶段,分别对应着图2的左侧和右侧部分这部分我......
  • JAVA IO流学习1
    目标:File类:File类是java.io包中很重要的一个类File类的对象可以代表一个文件或者目录,可以修改文件大小、文件最后修改日期、文件名等File对象不能操作文件的具体数据,即不能对文件进行读和写的操作File的构造方法:File(Stringpathname) -------指定文件(目录)名和路径创建......
  • Java:多线程-继承Thread类
    在Java中,通过继承Thread类是实现多线程的一种方式。这种方式允许你创建自己的线程类,并定义线程执行的具体内容。以下是关于继承Thread类的详细讲解:继承Thread类的步骤创建线程类:创建一个继承自Thread的子类。重写run方法:在子类中重写run方法,定义线程执行的任务。run方法是......