leetcode初级算法6.字符串转整数(atoi)

leetcode初级算法6.字符串转整数(atoi)

仅为个人刷题记录,不提供解题思路

题解与收获

我的解法:

public int myAtoi(String s) {//避免魔法值先设spaceString space = " ";//如果是空或者是一串空字符串就滚回去!if(s == null || s.replace(space,"").equals("")){return 0;}//拆分s字符串char[] chars = s.toCharArray();int length = chars.length;//记录空格的数量int count = 0;//最后整数的符号,默认为正String symbol = "+";//用来拼接符号和数字的变量,一会要转成long类型String result = "";//通过下面的循环定位到前置若干个空格的下一个字符for(int i = 0; i < length; i++){if(chars[i] == ' '){count++;}else{break;}}//如果是负号if(chars[count] == '-'){result += "-";symbol = "-";count++;}else if(chars[count] == '+'){//如果是正号count++;}else if(Character.isDigit(chars[count])){//如果是数字,就默认返回的数字为正result += chars[count++];}else{//既不是数字也不是+,-,说明是其他字符,直接返回0return 0;}//遍历后面的字符,是数字就加上,不是就直接break掉for(int i = count; i < length; i++){if(Character.isDigit(chars[i])){result += chars[i];}else{break;}}//可能出现下面两种情况,出现了就立马return 0;if(result.equals("-") || "".equals(result)){return 0;}//这里恶心我好久,如果甚至连long都不能存这个数字(不够长),则直接try catchlong l = 0;try {l = Long.parseLong(result);l = symbol.equals("+") ? Math.min(l, (long) Integer.MAX_VALUE) : Math.max(l, (long) Integer.MIN_VALUE);} catch (Exception e) {//进到这里说明确实存不了这么长的,直接根据符号return对的数字回去return symbol.equals("+") ? Integer.MAX_VALUE : Integer.MIN_VALUE;}//如果try catch块没有异常,说明顺利转成了long,并且经过了三目运算符得到正确值了,可以returnreturn (int)l;}

官方题解

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;}
}

说实话,看都看不太明白,但是这道题的核心应该是确定一个边界以及正负问题,有机会就去研究一下评论区大神的解法。
请添加图片描述

时间复杂度忒高了23333

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/329955.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

inner join on 加条件和where加条件_SQL学习笔记 - GROUP BY / JOIN / UNION

最近在DataCamp上学习SQL&#xff08;基于PostgreSQL&#xff09;的课程&#xff0c;本文主要记录自己易记混的点&#xff0c;以便日后参考学习&#xff0c;不做原理讲解。GROUP BY&#xff08;分组&#xff09;一般和聚合函数一起使用&#xff0c;包括COUNT()&#xff0c;AVG(…

Selector 实现原理

转载自 Selector 实现原理概述 Selector是NIO中实现I/O多路复用的关键类。Selector实现了通过一个线程管理多个Channel&#xff0c;从而管理多个网络连接的目的。 Channel代表这一个网络连接通道&#xff0c;我们可以将Channel注册到Selector中以实现Selector对其的管理。一个C…

转: 深入浅出-网络七层模型

转自 深入浅出&#xff0d;网络七层模型 - sunsky303 - 博客园引言 今天回顾一下&#xff0d;&#xff0d;网络七层模型&&网络数据包 网络基本概念 OSI模型 OSI 模型(Open System Interconnection model)是一个由国际标准化组织&#https://www.cnblogs.com/sunsky3…

date转timestamp格式_技术分享 | MySQL:timestamp 时区转换导致 CPU %sys 高的问题

作者&#xff1a;高鹏文章末尾有他著作的《深入理解 MySQL 主从原理 32 讲》&#xff0c;深入透彻理解 MySQL 主从&#xff0c;GTID 相关技术知识。本文为学习记录&#xff0c;可能有误请谅解。本文建议PC端观看&#xff0c;效果更佳。这个问题是一个朋友遇到的风云&#xff0c…

2021年最新springcloud配置中心不生效的版本原因

想直接看结论请到最下面&#xff0c;中间是我的纠错细节 实名吐槽一波cloudAlibaba文档。 github上的官方文档明明白白写着&#xff1a; 2.2.X版本适用于Springboot 2.2.X 彳亍&#xff01; 于是我将原本的2.6.0版本改成了SpringBoot 2.2.4Release&#xff0c;然后启动报错&a…

python爬新闻并保存csv_用python爬取内容怎么存入 csv 文件中

小白一个&#xff0c;爬取豆瓣电影250作为练习&#xff0c;想把爬取的内容用csv存储&#xff0c;想存但是不知道怎么自己原来代码拼接在一起。 ps:非伸手党&#xff0c;查阅了官方文档&#xff0c;也做了csv读写的练习&#xff0c;就是拼不到一起&#xff0c;不知道该怎么改。求…

idea部署springboot项目到外部tomcat

【README】 本文旨在记录idea部署springboot项目到外部tomcat的步骤&#xff1b; 第一次部署会踩很多坑儿&#xff0c;多查google&#xff0c;多重试&#xff1b; 第一次部署&#xff0c;不建议手动录入依赖&#xff0c;因为有可能遗漏&#xff1b;而且网络上资料很多但也很…

生成configDataContextRefres失败:Error creating bean with name ‘configDataContextRefresher‘

被这个问题折磨了很久&#xff0c;本人解决方法如下&#xff0c;奉劝一句&#xff0c;该看的官方文档还是要看&#xff0c;但是千万别傻傻地照做&#xff01; 首先编写bootstrap.properties&#xff0c;往里写入&#xff1a; 这些基础配置 然后检查自己是否引入了这个依赖&am…

python怎么用for循环找出最大值_用for循环语句写一个在输入的十个数字中求最大和最小值的python程序应该怎么写?...

“在输入的十个数字中求最大和最小值的 python 代码”这个需求&#xff0c;在不同时间来看&#xff0c;解题思路不同&#xff0c;所需要的 python 知识点不同。 作为萌新的我&#xff0c;为此特意整理了 3 种解法&#xff0c;以及相应的知识点笔记。 解法A&#xff1a;不使用列…

(转)mysql查看连接客户端ip和杀死进程

转自&#xff1a; mysql &#xff1a; show processlist 详解 - _小豪豪 - 博客园最近排查一些MySQL的问题&#xff0c;会经常用到 show processlist&#xff0c;所以在这里把这个命令总结一下&#xff0c;做个备忘&#xff0c;以备不时只需。 首先是几条常用的SQL。 1、按客户…

Java NIO学习笔记之图解ByteBuffer

转载自 Java NIO学习笔记之图解ByteBuffer ByteBuffer前前后后看过好几次了&#xff0c;实际使用也用了一些&#xff0c;总觉得条理不够清晰。 《程序员的思维修炼》一本书讲过&#xff0c;主动学习&#xff0c;要比单纯看资料效果来的好&#xff0c;所以干脆写个详细点的文章来…

小小涉及OpenFeign原理:Could not extract response: no suitable HttpMessageConverter found for response type

一、问题解释&#xff08;想看总结的去最下面&#xff09; org.springframework.web.client.UnknownContentTypeException: Could not extract response: no suitable HttpMessageConverter found for response type [class XXX] and content type [XXX;XXX]凡是报这个错误&am…

apache shiro怎么升级_Springboot整合Shiro之授权

第二条为推广文章&#xff0c;阅读一次0.3kuai&#xff0c;收入用于网站服务器及资源索取。Shiro是我们常用的一个权限管理框架&#xff0c;本文的重点是来介绍下在SpringBoot环境下我们怎么来使用Shiro。一、添加相关依赖本案例中我们使用SpringDataJPA和Thymeleaf来配合讲解&…

转: 虚拟IP(VIP)原理

转自&#xff1a; 虚拟IP&#xff08;VIP&#xff09;原理_海阔天空sky的博客-CSDN博客_vip 虚拟ip原理高可用性HA&#xff08;High Availability&#xff09;指的是通过尽量缩短因日常维护操作&#xff08;计划&#xff09;和突发的系统崩溃&#xff08;非计划&#xff09;所…

NIO学习–缓冲区

转载自 NIO学习–缓冲区Buffer其实就是是一个容器对象&#xff0c;它包含一些要写入或者刚读出的数据。在NIO中加入Buffer对象&#xff0c;体现了新库与原I/O的一个重要区别。在面向流的I/O中&#xff0c;您将数据直接写入或者将数据直接读到Stream对象中。 在NIO库中&#xff…

谷粒商城RabbitMQ设计思想详解:消息队列双重保险设计

前言 上来先放一张设计图&#xff0c;看这篇文章的前提是一定得写过或者了解这段业务&#xff0c;不然会看不懂&#xff0c;我下面将会给出我的理解&#xff0c;尽量让大家明白 设计思想 TransactionalOverridepublic SubmitOrderResponseVo submitOrder(OrderSubmitVo vo) {…

java restful接口开发实例_实战:基于Spring Boot快速开发RESTful风格API接口

写在前面的话这篇文章计划是在过年期间完成的&#xff0c;示例代码都写好了&#xff0c;结果亲戚来我家做客&#xff0c;文章没来得及写。已经很久没有更新文章了&#xff0c;小伙伴们&#xff0c;有没有想我啊。言归正传&#xff0c;下面开始&#xff0c;今天的话题。目标写一…

转:elasticsearch nested嵌套查询

转自&#xff1a; 【弄nng - Elasticsearch】DSL入门篇&#xff08;七&#xff09;—— Nested类型查询&#xff0c;聚合_司马缸砸缸了-CSDN博客文章目录1. nested query2. nested 对象聚合项目推荐nested类型就是为了解决object类型在对象数组上丢失关联性的问题的&#xff0…

谷粒商城RabbitMQ锁库存逻辑详解--新理解(长文警告)

前言 不废话&#xff0c;上来就说&#xff0c;代码我会放挺多&#xff0c;写过这个项目的自然能懂&#xff0c;如果真的像理解的请认真看哦 分析 /*出现的问题&#xff1a;扣减库存成功了&#xff0c;但是由于网络原因超时&#xff0c;出现异常&#xff0c;导致订单事务回滚&…

NIO学习–核心概念与基本读写

转载自 NIO学习–核心概念与基本读写这两天花了时间学习了java的nio&#xff0c;看的书是Ron Hitchens著的 《Java NIO》&#xff0c;总的来说&#xff0c;这本书真的写的非常好&#xff0c;而且整本书将java nio的内容从底层讲了个遍&#xff0c;书不厚&#xff0c;但是确实值…