当前位置: 首页 > news >正文

字符串转换整数(atoi)

请你来实现一个 myAtoi(string s) 函数,使其能将字符串转换成一个 32 位有符号整数(类似 C/C++ 中的 atoi 函数)。

函数 myAtoi(string s) 的算法如下:

读入字符串并丢弃无用的前导空格
检查下一个字符(假设还未到字符末尾)为正还是负号,读取该字符(如果有)。 确定最终结果是负数还是正数。 如果两者都不存在,则假定结果为正。
读入下一个字符,直到到达下一个非数字字符或到达输入的结尾。字符串的其余部分将被忽略。
将前面步骤读入的这些数字转换为整数(即,“123” -> 123, “0032” -> 32)。如果没有读入数字,则整数为 0 。必要时更改符号(从步骤 2 开始)。
如果整数数超过 32 位有符号整数范围 [−2^31, 2^31 − 1] ,需要截断这个整数,使其保持在这个范围内。具体来说,小于 −2^31 的整数应该被固定为 −2^31 ,大于 2^31 − 1 的整数应该被固定为 2^31 − 1 。
返回整数作为最终结果。
注意:

本题中的空白字符只包括空格字符 ’ ’ 。
除前导空格或数字后的其余字符串外,请勿忽略 任何其他字符。

示例 1:

输入:s = “42”
输出:42
解释:加粗的字符串为已经读入的字符,插入符号是当前读取的字符。
第 1 步:“42”(当前没有读入字符,因为没有前导空格)
^
第 2 步:“42”(当前没有读入字符,因为这里不存在 ‘-’ 或者 ‘+’)
^
第 3 步:“42”(读入 “42”)
^
解析得到整数 42 。
由于 “42” 在范围 [-2^31, 2^31 - 1] 内,最终结果为 42 。
示例 2:

输入:s = " -42"
输出:-42
解释:
第 1 步:" -42"(读入前导空格,但忽视掉)
^
第 2 步:" -42"(读入 ‘-’ 字符,所以结果应该是负数)
^
第 3 步:" -42"(读入 “42”)
^
解析得到整数 -42 。
由于 “-42” 在范围 [-2^31, 2^31 - 1] 内,最终结果为 -42 。
示例 3:

输入:s = “4193 with words”
输出:4193
解释:
第 1 步:“4193 with words”(当前没有读入字符,因为没有前导空格)
^
第 2 步:“4193 with words”(当前没有读入字符,因为这里不存在 ‘-’ 或者 ‘+’)
^
第 3 步:“4193 with words”(读入 “4193”;由于下一个字符不是一个数字,所以读入停止)
^
解析得到整数 4193 。
由于 “4193” 在范围 [-2^31, 2^31 - 1] 内,最终结果为 4193 。

提示:

0 <= s.length <= 200
s 由英文字母(大写和小写)、数字(0-9)、’ ‘、’+‘、’-’ 和 ‘.’ 组成。

解题思路:

  • 先去掉字符串两边的空格
  • 然后判断符号
  • 最后读取数字
class Solution {public int myAtoi(String s) {s=s.trim();//去掉前后的空格if(s.length()==0) {return 0;}//index遍历字符串中字符的位置,res最终结果,sign符号,1是正数,-1是负数,默认为正数int index=0,sign=1,res=0,len=s.length();if(s.charAt(index)=='-'||s.charAt(index)=='+') {sign=s.charAt(index++)=='+'?1:-1;}for(;index<s.length();index++) {int digit=s.charAt(index)-'0';//按照题中的要求,读入下一个字符,直到到达下一个非数字字符或到达输入的结尾。//字符串的其余部分将被忽略。如果读取了非数字,后面的都要忽略if(digit<0||digit>9) {break;}//越界处理if(res>Integer.MAX_VALUE/10||(res==Integer.MAX_VALUE/10&&digit>Integer.MAX_VALUE%10)) {return sign==1?Integer.MAX_VALUE:Integer.MIN_VALUE;}else {res=10*res+digit;}}return res*sign;}
}

相关文章:

字符串转换整数(atoi)

请你来实现一个 myAtoi(string s) 函数&#xff0c;使其能将字符串转换成一个 32 位有符号整数&#xff08;类似 C/C 中的 atoi 函数&#xff09;。 函数 myAtoi(string s) 的算法如下&#xff1a; 读入字符串并丢弃无用的前导空格 检查下一个字符&#xff08;假设还未到字符…...

Servlet练习

练习准备 编写Student和StudentDao package beans;public class Student{private String num;private String name;public Student(){}public String getNum() {return num;}public String getName() {return name;}public void setNum(String num) {this.num num;}public v…...

美国高速公路信号灯控制项目的大致逻辑和步骤 智慧公路设计

美国高速公路信号灯控制项目的大致逻辑和步骤&#xff1a; 美国那边先提供一个关于具体做什么需求、那边的设备&#xff08;信号灯&#xff09;有什么参数&#xff0c;什么接口&#xff0c;分别是什么属性等等的详细设计文档&#xff0c;开发人员拿到这个文档以后把它看懂&…...

数字电源专用IC,国产C2000, QX320F280049

一、特性参数 1、独立双核&#xff0c;32位CPU&#xff0c;单核主频400MHz 2、IEEE 754 单精度浮点单元 &#xff08;FPU&#xff09; 3、三角函数单元 &#xff08;TMU&#xff09; 4、1MB 的 FLASH &#xff08;ECC保护&#xff09; 5、1MB 的 SRAM &#xff08;ECC保护&…...

第六章 ARM汇编语言程序设计【嵌入式系统】

第六章 ARM汇编语言程序设计【嵌入式系统】前言推荐第六章 ARM汇编语言程序设计6.1 概述6.2 ARM汇编语言指示符6.3 ARM编程举例6.4 ARM过程调用6.5 典型举例6.6 内嵌汇编C与汇编相互调用最后前言 以下内容源自《【嵌入式系统】》 仅供学习交流使用 推荐 无 第六章 ARM汇编语…...

详细讲讲Java线程的状态

TERMINATED状态 是什么状态&#xff1f; 在Java线程的生命周期中&#xff0c;TERMINATED状态是线程的最终状态&#xff0c;表示线程已经执行完毕并已经退出。当一个线程完成了它的工作&#xff0c;或者因为异常而提前结束时&#xff0c;它会进入TERMINATED状态。此时线程不再执…...

企业月结快递管理教程

回答这个问题的之前&#xff0c;我们先来看看什么是企业月结快递管理...... 经济的发展&#xff0c;技术的进步&#xff0c;电商行业的加持之下&#xff0c;这几年快递行业的发展有目共睹。不仅是我们的生活离不开快递&#xff0c;很多企业的运作多多少少也离不开“快递”二字…...

cm cdp告警 Swap Memory Usage Suppress...

原因&#xff1a;服务器没有关swap&#xff0c;服务使用了swap 在cdp集群中&#xff0c;一般要关掉swap&#xff0c;如果没有关。可以使用 下面命令设置程序尽可能不使用swap&#xff0c;使用swap会影响性能 修改后&#xff0c;重启服务就不会使用swap了 sysctl -w vm.swappi…...

3.8——友元

类的主要特点之一是信息隐藏和封装&#xff0c;即类的私有成员和保护成员只能在定义的范围内使用&#xff0c;也就是说私有成员和保护成员只能通过类的成员函数来访问。但是&#xff0c;有时候我们在类外也需要访问私有成员数据或保护成员数据怎么办。这时我们就要通过友元函数…...

C++ OOP Feature Conclusion (更新中)

目录 1.类与对象 1.1 基本概念&#xff08;继承、封装、抽象、多态&#xff09; 1.2类的声明 1.3成员函数&#xff08;对象所占空间取决于数据成员&#xff0c;和成员函数无关&#xff09; 1.4数据成员&#xff08;不能在类中初始化&#xff09; 1.5构造与析构函数&#xff08…...

【HTTP】Cookie、Session、Token以及Cookie优化

Cookie、Session、TokenCookie优化Cookie、Session、Token 在开始介绍Cookie安全之前&#xff0c;我们先来了解一下实现授权的方式。 在登录功能中&#xff0c;为了记住登录成功后的信息&#xff0c;在客户端&#xff0c;我们通常会使用Cookie来记录&#xff0c;但是&#xf…...

npm之报错:Error: EACCES: permission denied, access ‘/usr/local/lib/node_modules‘

1.报错 363 error [Error: EACCES: permission denied, rename ‘/usr/local/lib/node_modules/tldr’ -> ‘/usr/local/lib/node_modules/.tldr-8nq4AGAt’] { 363 error errno: -13, 363 error code: ‘EACCES’, 363 error syscall: ‘rename’, 363 error path: ‘/usr/…...

「SQL面试题库」 No_30 超过5名学生的课

&#x1f345; 1、专栏介绍 「SQL面试题库」是由 不是西红柿 发起&#xff0c;全员免费参与的SQL学习活动。我每天发布1道SQL面试真题&#xff0c;从简单到困难&#xff0c;涵盖所有SQL知识点&#xff0c;我敢保证只要做完这100道题&#xff0c;不仅能轻松搞定面试&#xff0…...

自定义maven插件,在项目中命令启动springboot并加载当前项目资源

背景 最近在制定团队内公用的基础框架&#xff0c;基于单应用多module的架构思路&#xff0c;使用maven管理项目依赖&#xff0c;在项目中定义了一个springboot模块&#xff0c;该模块依赖具体的业务实现模块&#xff0c;启动后通过扫描路径下的类加载服务&#xff0c;业务开发…...

Linux系统【Centos7】更新内核更新软件详细教程

更新内核&#xff1a; 1. 打开终端&#xff0c;输入命令 sudo yum update&#xff0c;等待更新完成。 2. 重启系统&#xff0c;输入命令 sudo reboot。 3. 在 GRUB 引导界面&#xff0c;选择最新的内核版本&#xff0c;按下回车键进入系统。 4. 在终端中输入命令 uname -r&…...

C++ 中new/delete与malloc/free详解

文章目录前言一、new/delete1. 序言2. 使用方法2.1. new 和 delete 基本语法2.2. new 和 delete 的底层实现原理3. 底层原理3.1. operator new 和 operator delete3.2. new 和 delete 的底层实现原理4. 注意事项5. 总结二、malloc/free1. 序言2. 使用方法2.1. malloc 和 free 基…...

crm软件哪个好?该如何选择?

crm软件哪个好&#xff1f;该如何选择&#xff1f; 首先我们需要明确一下什么是好的CRM系统&#xff0c;优质的CRM系统应该具备以下优势&#xff1a; 1&#xff09;提高销售效率&#xff1a;通过CRM系统&#xff0c;销售人员可以跟踪客户互动历史和交易记录&#xff0c;了解客…...

蓝桥杯第22天(Python)(疯狂刷题第5天)

题型&#xff1a; 1.思维题/杂题&#xff1a;数学公式&#xff0c;分析题意&#xff0c;找规律 2.BFS/DFS&#xff1a;广搜&#xff08;递归实现&#xff09;&#xff0c;深搜&#xff08;deque实现&#xff09; 3.简单数论&#xff1a;模&#xff0c;素数&#xff08;只需要…...

软件测试面试常问的问题有哪些?

互联发展是很快的&#xff0c;每年都会有新语言的诞生。 我干测试已经三年了&#xff0c;主要负责web功能测试&#xff0c;java编写接口自动化&#xff0c;APP功能测试&#xff0c;APP 接口自动化&#xff08;也是用的java&#xff09;&#xff0c;面过得测试也差不多30个&…...

js之文件信息读取篇高级基础

文章目录js之文件信息读取&#xff08;FileReader&#xff09;获取文件相关信息的两种方式js原生拖拽事件js之文件信息读取&#xff08;FileReader&#xff09; 首先这里面会讲一些知识点 bolb 对象FileReader对象 let blob new Blob([heewwekgewgwer], { type: text/plain …...

遍历 Map 类型集合的方法汇总

1 方法一 先用方法 keySet() 获取集合中的所有键。再通过 gey(key) 方法用对应键获取值 import java.util.HashMap; import java.util.Set;public class Test {public static void main(String[] args) {HashMap hashMap new HashMap();hashMap.put("语文",99);has…...

(二)TensorRT-LLM | 模型导出(v0.20.0rc3)

0. 概述 上一节 对安装和使用有个基本介绍。根据这个 issue 的描述&#xff0c;后续 TensorRT-LLM 团队可能更专注于更新和维护 pytorch backend。但 tensorrt backend 作为先前一直开发的工作&#xff0c;其中包含了大量可以学习的地方。本文主要看看它导出模型的部分&#x…...

linux 错误码总结

1,错误码的概念与作用 在Linux系统中,错误码是系统调用或库函数在执行失败时返回的特定数值,用于指示具体的错误类型。这些错误码通过全局变量errno来存储和传递,errno由操作系统维护,保存最近一次发生的错误信息。值得注意的是,errno的值在每次系统调用或函数调用失败时…...

Reasoning over Uncertain Text by Generative Large Language Models

https://ojs.aaai.org/index.php/AAAI/article/view/34674/36829https://ojs.aaai.org/index.php/AAAI/article/view/34674/36829 1. 概述 文本中的不确定性在许多语境中传达,从日常对话到特定领域的文档(例如医学文档)(Heritage 2013;Landmark、Gulbrandsen 和 Svenevei…...

免费PDF转图片工具

免费PDF转图片工具 一款简单易用的PDF转图片工具&#xff0c;可以将PDF文件快速转换为高质量PNG图片。无需安装复杂的软件&#xff0c;也不需要在线上传文件&#xff0c;保护您的隐私。 工具截图 主要特点 &#x1f680; 快速转换&#xff1a;本地转换&#xff0c;无需等待上…...

抽象类和接口(全)

一、抽象类 1.概念&#xff1a;如果⼀个类中没有包含⾜够的信息来描绘⼀个具体的对象&#xff0c;这样的类就是抽象类。 像是没有实际⼯作的⽅法,我们可以把它设计成⼀个抽象⽅法&#xff0c;包含抽象⽅法的类我们称为抽象类。 2.语法 在Java中&#xff0c;⼀个类如果被 abs…...

离线语音识别方案分析

随着人工智能技术的不断发展&#xff0c;语音识别技术也得到了广泛的应用&#xff0c;从智能家居到车载系统&#xff0c;语音识别正在改变我们与设备的交互方式。尤其是离线语音识别&#xff0c;由于其在没有网络连接的情况下仍然能提供稳定、准确的语音处理能力&#xff0c;广…...

区块链技术概述

区块链技术是一种去中心化、分布式账本技术&#xff0c;通过密码学、共识机制和智能合约等核心组件&#xff0c;实现数据不可篡改、透明可追溯的系统。 一、核心技术 1. 去中心化 特点&#xff1a;数据存储在网络中的多个节点&#xff08;计算机&#xff09;&#xff0c;而非…...

【WebSocket】SpringBoot项目中使用WebSocket

1. 导入坐标 如果springboot父工程没有加入websocket的起步依赖&#xff0c;添加它的坐标的时候需要带上版本号。 <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-websocket</artifactId> </dep…...

ui框架-文件列表展示

ui框架-文件列表展示 介绍 UI框架的文件列表展示组件&#xff0c;可以展示文件夹&#xff0c;支持列表展示和图标展示模式。组件提供了丰富的功能和可配置选项&#xff0c;适用于文件管理、文件上传等场景。 功能特性 支持列表模式和网格模式的切换展示支持文件和文件夹的层…...