LeetCode8. 字符串转换整数 (atoi)(java)

java中字符串转整数及MyAtoi方法的实现 主要介绍了java中字符串转整数及MyAtoi方法的实现的相关资料,需要的朋友可以参考下 立即下载

题目;

请你来实现一个 atoi 函数,使其能将字符串转换成整数。

首先,该函数会根据需要丢弃无用的开头空格字符,直到寻找到第一个非空格的字符为止。

当我们寻找到的第一个非空字符为正或者负号时,则将该符号与之后面尽可能多的连续数字组合起来,作为该整数的正负号;假如第一个非空字符是数字,则直接将其与之后连续的数字字符组合起来,形成整数。

该字符串除了有效的整数部分之后也可能会存在多余的字符,这些字符可以被忽略,它们对于函数不应该造成影响。

注意:假如该字符串中的第一个非空格字符不是一个有效整数字符、字符串为空或字符串仅包含空白字符时,则你的函数不需要进行转换。

在任何情况下,若函数不能进行有效的转换时,请返回 0。

说明:

假设我们的环境只能存储 32 位大小的有符号整数,那么其数值范围为 [−231, 231 − 1]。如果数值超过这个范围,qing返回 INT_MAX (231 − 1) 或 INT_MIN (−231) 。

示例:
在这里插入图片描述在这里插入图片描述
代码:

  • 解法一
class Solution {
public int myAtoi(String str) {
		String s = "";
		//去除字符串前后的空格
		str = str.trim();
		//新的字符串 如果长度为0
		if (str.length() == 0) {
			return 0;
		}
		//新的字符串 如果长度为1
		if (str.length() == 1) {
			if (str.charAt(0) >= '0' && str.charAt(0) <= '9') {
				return Integer.parseInt(str);
			} else {
				return 0;
			}
		}
		//如果新字符串 第一个字符为‘-’
		if (str.charAt(0) == '-') {
			if (str.length() == 2 && str.charAt(1) == '0') {
				return 0;
			}
			if (str.charAt(1) < '0' || str.charAt(1) > '9') {
				return 0;
			} else {
				s = s + str.charAt(0);
				int i;
				if (str.charAt(1) == '0') {
					i = 2;
				} else {
					i = 1;
				}
				for (; i < str.length(); i++) {

					if (str.charAt(i) >= '0' && str.charAt(i) <= '9') {
						s = s + str.charAt(i);
					} else {
						break;
					}
				}
				try {
					if (Integer.parseInt(s) <= (int) Math.pow(-2, 31)) {

					} else {

					}

				} catch (NumberFormatException e) {
					if (s.equals("-")) {

						return 0;
					}
					return (int) Math.pow(-2, 31);

				}
				return Integer.parseInt(s);
			}
		}
		//如果新字符串 第一个字符‘+’
		if (str.charAt(0) == '+') {
			if (str.length() == 2 && str.charAt(1) == '0') {
				return 0;
			}
			if (str.charAt(1) < 48 || str.charAt(1) > 57) {
				return 0;
			} else {
				s = s + str.charAt(0);
				int i;
				if (str.charAt(1) == '0') {
					i = 2;
				} else {
					i = 1;
				}
				for (; i < str.length(); i++) {

					if (str.charAt(i) >= '0' && str.charAt(i) <= '9') {
						s = s + str.charAt(i);
					} else {
						break;
					}
				}
				try {
					if (Integer.parseInt(s) >= (int) Math.pow(2, 31)) {

					} else {

					}

				} catch (NumberFormatException e) {
					if (s.equals("+")) {

						return 0;
					}
					return (int) Math.pow(2, 31);

				}
				return Integer.parseInt(s);
			}
		}
		//如果新字符串 第一个字符为数字
		if (str.charAt(0) >= 48 && str.charAt(0) <= 57) {
			int i;
			if (str.charAt(0) == 48) {
				i = 1;
			} else {
				i = 0;
			}
			for (; i < str.length(); i++) {
				if (str.charAt(i) >= 48 && str.charAt(i) <= 57) {
					s = s + str.charAt(i);
				} else {
					break;
				}
			}
			try {
				if (Integer.parseInt(s) <= (int) Math.pow(2, 31)) {

				} else {

				}

			} catch (NumberFormatException e) {
				if (s.equals("")) {

					return 0;
				}
				return (int) Math.pow(2, 31);

			}
			return Integer.parseInt(s);
		}
		return 0;
	}

}

  • 别人的代码
class Solution {
    public int myAtoi(String str) {
        if(str.length()==0)
        return 0;	//判断是否为空字符串
        int i=0;	//字符串索引
        int flag=1;//正负判断
        int base=0;//存储转换后数字
       
        while(str.charAt(i)==' '){	//去除空格
            i++;
            if(i==str.length()) //如果全为空格则直接返回,如果不加这个if会导致全为空格时的out of range的错误
                return 0;
        }	
        //第一个字符为正负号时
        if(str.charAt(i)=='-'||str.charAt(i)=='+'){
            flag = str.charAt(i++) == '-' ? -1 : 1;
        }
        while(i<str.length()&&str.charAt(i)>='0'&&str.charAt(i)<='9'){            
                 if (base>Integer.MAX_VALUE/10||(base==Integer.MAX_VALUE/10&&str.charAt(i)-'0'>7)) { 
                     return (flag==1) ? Integer.MAX_VALUE : Integer.MIN_VALUE;
                 }
                base=(str.charAt(i++)-'0')+base*10;                               
        }
        return base*flag;
    }
}
MATLAB创建GUI面板实现二维码生成与识别 利用matlab设计gui界面实现二维码的生成与内容识别 阅读详情

相关推荐

90+个各种疾病相关医疗数据集

含新冠、传染病、医学图像等

2万+

初级算法-11-字符串转换整数 (atoi)

描述: 请你来实现一个 myAtoi(string s) 函数,使其能将字符串转换成一个 32 位有符号整数(类似 C/C++ 中的 atoi 函数)。 函数 myAtoi(string s) 的算法如下: 读入字符串并丢弃无用的前导空格 检查下一个字符(假设还未到字符末尾)为正还是负号,读取该字符(如果有)。 确定最终结果是负数还是正数。 如果两者都不存在,则假定结果为正。 读入下一个字符,直到到达下一个非数字字符或到达输入的结尾。字符串的其余部分将被忽略。 将前面步骤读入的这些数字转换为整数(即,“1.

eqerlian的博客 294

牛顿法vs高斯牛顿法vs LM算法:三行代码说清核心区别(附性能对比表格)

本文通过对比牛顿法、高斯牛顿法和LM算法的核心迭代代码,揭示了三者在非线性最小二乘优化中的本质区别。LM算法通过引入阻尼因子,在高斯牛顿法的快速收敛与梯度下降的稳定性之间取得平衡,成为工程实践中鲁棒性最强的首选。文章还提供了清晰的性能对比表格,帮助开发者根据初始估计和问题性质快速选择合适算法。

weixin_29062255的博客 419

8. 字符串转换整数 (atoi)-LeetCode(Java)

​ 8. 字符串转换整数 (atoi) 题目:8. 字符串转换整数 (atoi) 请你来实现一个 myAtoi(string s) 函数,使其能将字符串转换成一个 32 位有符号整数(类似 C/C++ 中的 atoi 函数)。 函数 myAtoi(string s) 的算法如下: 读入字符串并丢弃无用的前导空格 检查下一个字符(假设还未到字符末尾)为正还是负号,读取该字符(如果有)。 确定最终结果是负数还是正数。 如果两者都不存在,则假定结果为正。 读入下一个字符,直到到达下

m0_60416689的博客 1294

手把手完整实现STM32+NB-IoT+MQTT+ThingsCloud云平台+手机APP(Android或iOS)及微信小程序及Web app 应用

本教程以远程温湿度显示及点灯作为示例。最终效果实现本地OLED显示屏、云平台和手机APP、微信小程序和Web App可远程查看温湿度数据,并可远程控制LED灯亮灭。以此完成基于MQTT协议的NB-IoT远程发布订阅数据,以此在本教程基础上可扩展开发更多的功能。

嵌入式阿齐Archie 2万+

redhawk:Low Power Analysis

1.rush current与switch cell 在standby状态下为了控制leakage power我们选择power gating的设计方式,使用power switch cell关闭block/power domain的电源。 power switch的基本介绍可见: 低功耗设计-Power Switch power switch的table中有四种状态,对应block工作、待机和上电,下电。low power analysis主要分析上电的过程。 上电过程可以看做mos电容

m0_61544122的博客 3206

【算法 -- LeetCode】(08) 字符串转换整数 (atoi)

(08) 字符串转换整数 (atoi)

Kevin Learn Android 342

白鲸优化算法(BWO)详解:从生物灵感 to 工程实践

白鲸优化算法(BWO)是一种新型的群体智能优化算法,模拟白鲸的游泳、捕食和鲸落行为。该算法通过平衡因子控制探索与开发阶段的转换:探索阶段采用正弦/余弦函数模拟白鲸的同步游泳,开发阶段引入莱维飞行增强局部搜索,鲸落阶段通过随机更新避免局部最优。BWO具有参数少、实现简单、收敛速度快等优点,已在多个优化问题上展现出优异性能。其数学模型将白鲸的三种核心行为抽象为位置更新公式,实现了全局搜索与局部开发的自然平衡。

qq_42212808的博客 290

LeetCode字符串转换整数 (atoi)

LeetCode字符串转换整数 (atoi)

山雀的博客 1147

YOLOv8进阶:SEAM注意力与Repulsion Loss双剑合璧,突破遮挡检测瓶颈

做目标检测时,最头疼的莫过于目标被遮挡的场景——行人被树木挡住一半、车辆被广告牌遮挡部分轮廓……这些情况往往让模型“犯迷糊”。但现在,有了SEAM注意力模块和Repulsion Loss排斥损失,我们就能让YOLOv8在遮挡场景下也能“拨开迷雾见真章”。这篇教程会带你一步步理解这两个技术,并亲手把它们融入YOLOv8,让你的检测模型在复杂场景下也能稳如泰山。

FJN110的博客 233

芯片原厂linux驱动开发的分享

大家好,我是XX,来自湖南XX学院,电子信息18级,也曾在创新基地控制组学习过两三年,毕业后就职于一家芯片原厂的解决方案部,担任驱动工程师的职位,算上实习期,我的工作时长已有两年。在此我想将这两年期间学习与积累到的一些经验输出出来,与大家一同分享。知识面有限,只能简单介绍一些驱动开发方向的一些经验,且由于经验尚浅,文中难免会有一些疏漏和错误之处,还请大家积极地批评指正。

嵌入式技术开发 849

字符串转换整数(atoi)-java

32 位有符号整数atoi函数如果没有读入数字,则整数为0。必要时更改符号(从步骤 2 开始)。小于−231的整数应该被固定为−231,大于231 − 1的整数应该被固定为231 − 1。' '-42整体思路还是很简单的, 将字符串的字符提取出来转换成整数, 然后依据题目要求, 注意一下细节就行了.

2301_80661536的博客 1060

国资e学快速学习实战教程

本文主要介绍了国资e学快速学习实战教程,希望能对同学们有所帮助。 文章目录 1. 前言 2. 实战教程

weixin_43178406的博客 11万+

LeetCode 8. 字符串转换整数 (atoi)(Java)

8. 字符串转换整数 (atoi) 请你来实现一个 atoi 函数,使其能将字符串转换成整数。 首先,该函数会根据需要丢弃无用的开头空格字符,直到寻找到第一个非空格的字符为止。接下来的转化规则如下: 如果第一个非空字符为正或者负号时,则将该符号与之后面尽可能多的连续数字字符组合起来,形成一个有符号整数。 假如第一个非空字符是数字,则直接将其与之后连续的数字字符组合起来,形成一个整数。 该字符串在有...

nuts_and_bolts的博客 235

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

SAP B1中文培訓教材_SDK

公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说

LeetCode 8. 字符串转换整数 (atoi)(java实现)

请你来实现一个 atoi 函数,使其能将字符串转换成整数。 首先,该函数会根据需要丢弃无用的开头空格字符,直到寻找到第一个非空格的字符为止。 当我们寻找到的第一个非空字符为正或者负号时,则将该符号与之后面尽可能多的连续数字组合起来,作为该整数的正负号;假如第一个非空字符是数字,则直接将其与之后连续的数字字符组合起来,形成整数。 该字符串除了有效的整数部分之后也可能会存在多余的字符,这些字符可以被忽...

A__B__C__的博客 593

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

LeetCode算法题8:字符串转换整数 (atoi)(Java版)

8. 字符串转换整数 (atoi) LeetCode传送门:字符串转换整数 (atoi) 题目描述 请你来实现一个 atoi 函数,使其能将字符串转换成整数。 首先,该函数会根据需要丢弃无用的开头空格字符,直到寻找到第一个非空格的字符为止。接下来的转化规则如下: 如果第一个非空字符为正或者负号时,则将该符号与之后面尽可能多的连续数字字符组合起来,形成一个有符号整数。 假如第一个非空字符是数...

weixin_42037364的博客 467

RU DOS版、EFI版32bit/64bit BIOS常用工具

DOS版、EFI版的RU工具,可用来查看IO、MEM、PCI、SMBIOS等资源。亲测在EFI SHELL下可用。

leetCode 8. 字符串转换整数 (atoi)(java)

题目描述 请你来实现一个 atoi 函数,使其能将字符串转换成整数。 首先,该函数会根据需要丢弃无用的开头空格字符,直到寻找到第一个非空格的字符为止。 当我们寻找到的第一个非空字符为正或者负号时,则将该符号与之后面尽可能多的连续数字组合起来,作为该整数的正负号;假如第一个非空字符是数字,则直接将其与之后连续的数字字符组合起来,形成整数。 该字符串除了有效的整数部分之后也可能会存在多余的字符,这些字...

qq_43796866的博客 156

【LeetCode】 8. String to Integer (atoi) 字符串转换整数 (atoi)(Medium)(JAVA)

【LeetCode】 8. String to Integer (atoi) 字符串转换整数 (atoi)(Medium)(JAVA) 题目地址: https://leetcode.com/problems/string-to-integer-atoi/ 题目描述: Implement atoi which converts a string to an integer. The functio...

qq_16927853的博客 189

LeetCode——8 字符串转换整数 (atoi)(JAVA)

请你来实现一个 myAtoi(string s)函数,使其能将字符串转换成一个 32 位有符号整数(类似 C/C++ 中的 atoi函数)。 函数myAtoi(string s)的算法如下: 读入字符串并丢弃无用的前导空格 检查下一个字符(假设还未到字符末尾)为正还是负号,读取该字符(如果有)。 确定最终结果是负数还是正数。 如果两者都不存在,则假定结果为正。 读入下一个字符,直到到达下一个非数字字符或到达输入的结尾。字符串的其余部分将被忽略。 将前面步骤读入的这些数字转换为整数(即,“123” -&gt

一只奋斗中的本科生 388

【leetcode】8. 字符串转换整数 (atoi)(Java)

题目描述 题目链接:8. 字符串转换整数 (atoi). 题解 从前向后遍历字符串,依次做以下的操作 1、去掉前面的空格 2、判断是否有正负号,如果有负号,flag == 1 3、判断下一位是不是数字,如果是数字,更新res,如果不是数字,直接返回res 4、更新res之后要判断res是否越界。 可以通过:用last记录上一次的res,更新res之后用res/10 == last来判断是否越界 详见代码注释 class Solution { public int myAtoi(String s)

weixin_44190665的博客 222

atoi java,leetcode题目8: 字符串转换整数 (atoi)(java)

题目描述请你来实现一个 atoi 函数,使其能将字符串转换成整数。示例输入: "42"输出: 42输入: " -42"输出: -42解释: 第一个非空白字符为 '-', 它是一个负号。我们尽可能将负号与后面所有连续出现的数字组合起来,最后得到 -42 。输入: "4193 with words"输出: 4193解释: 转换截止于数字 '3' ,因为它的下一个字符不为数字。输入: "words ...

weixin_39525243的博客 124

[LeetCode] 8. 字符串转换整数 (atoi)(java实现)秦九韶算法

@[TOC]( [LeetCode] 8. 字符串转换整数 (atoi)(java实现)秦九韶算法) 1. 题目 2. 读题(需要重点注意的东西) 思路: 按题意,需要如下三步: 先把前面的空格删掉 分为正数和负数 秦九韶算法转换为int 判断int溢出 3. 解法 ---------------------------------------------------解法---------------------------------------------------: class Sol

cloud的博客 465

leetcode8. 字符串转换整数 (atoi)(java & python3)

java: 感谢y总❤️ class Solution { public int myAtoi(String s) { int len = s.length(); char[] cs = s.toCharArray(); int t = 0; while(t < len && cs[t] == ' '){ t++; } if(t == len) retu

qq_45908682的博客 329

【经典算法】LeetCode 8:多种编程语言实现字符串转换整数 (atoi)(Java/C/Python3/Go实现含注释说明,中等)

方式优点缺点时间复杂度空间复杂度方式一(正则)代码简洁,易于理解和实现正则表达式可能带来性能开销O(n)O(1)方式二(迭代)性能较好,没有正则表达式开销代码可能相对较长,需要手动处理更多情况O(n)O(1)

927

leetcode算法题8:字符串转换整数 (atoi)

题目: 请你来实现一个atoi函数,使其能将字符串转换成整数。 首先,该函数会根据需要丢弃无用的开头空格字符,直到寻找到第一个非空格的字符为止。接下来的转化规则如下: 如果第一个非空字符为正或者负号时,则将该符号与之后面尽可能多的连续数字字符组合起来,形成一个有符号整数。 假如第一个非空字符是数字,则直接将其与之后连续的数字字符组合起来,形成一个整数。 该字符串在有效的整数部分之后也可能会存在多余的字符,那么这些字符可以被忽略,它们对函数不应该造成影响。 注意:假如该字符串中的第一个非空格字符不是..

MySunshine07的博客 414

Java实现 LeetCode 8 字符串转换整数(atoi)

8. 字符串转换整数 (atoi) 请你来实现一个 atoi 函数,使其能将字符串转换成整数。 首先,该函数会根据需要丢弃无用的开头空格字符,直到寻找到第一个非空格的字符为止。 当我们寻找到的第一个非空字符为正或者负号时,则将该符号与之后面尽可能多的连续数字组合起来,作为该整数的正负号;假如第一个非空字符是数字,则直接将其与之后连续的数字字符组合起来,形成整数。 该字符串除了有效的整数部分之后也可...

南 墙 1万+
上一篇: LeetCode5. 最长回文子串(Java)
下一篇: LeetCode26. 删除排序数组中的重复项(Java)
inferno devil
博客等级 码龄9年 54粉丝 172原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值