【LeetCode】 字符串转换整数 (atoi)

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

    问题描述:

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

 

 

 

问题分析:

首先,需要考虑几个情况:

  1. 输入字符串为空,返回0。
  2. 前导空格需要忽略。
  3. 如果第一个非空字符不是数字、正负号,则返回0。
  4. 如果数字部分的长度超过了 32 位,则需要截断。
  5. 需要考虑对于边界值的处理,即最大值和最小值。

有了以上思路,接下来需要逐步实现代码。

#include <stdlib.h>
#include <stdio.h>
#include <limits.h> // 包含INT_MAX和INT_MIN常量

int myAtoi(char *s) {
    int len = strlen(s);
    int sign = 1; // 符号默认为正
    int result = 0;
    int i = 0;

    // 丢弃前导空格,移动游标i
    while (s[i] == ' ') {
        i++;
    }

    // 确定符号
    if (s[i] == '-') {
        sign = -1;
        i++;
    } else if (s[i] == '+') {
        i++;
    }

    // 转换数字字符
    for (; i < len; i++) {
        if (s[i] >= '0' && s[i] <= '9') {
            int digit = s[i] - '0';

            // 判断是否超过32位
            if (result > INT_MAX / 10 || (result == INT_MAX / 10 && digit > 7)) {
                return sign > 0 ? INT_MAX : INT_MIN;
            }

            result = result * 10 + digit;
        } else { // 遇到非数字字符,停止转换
            break;
        }
    }

    return sign * result;
}

int main() {
    char testStr1[] = "42";
    char testStr2[] = "   -42";
    char testStr3[] = "4193 with words";
    char testStr4[] = "words and 987";
    char testStr5[] = "-91283472332";

    printf("%d\n", myAtoi(testStr1)); // 42
    printf("%d\n", myAtoi(testStr2)); // -42
    printf("%d\n", myAtoi(testStr3)); // 4193
    printf("%d\n", myAtoi(testStr4)); // 0
    printf("%d\n", myAtoi(testStr5)); // INT_MIN

    return 0;
}

        在上面的代码中,使用了一个 sign 变量来记录正负号,遇到 ‘-’ 号时,符号为负,遇到 ‘+’ 号时,符号为正。

        对于数字转换,使用了一个 result 变量来记录数字,并使用 digit 变量来存储当前字符对应的数字。在处理过程中,需要考虑溢出的情况,当 result 大于 32 位有符号整数的最大值或者小于 32 位有符号整数的最小值时,需要直接返回边界值。

最后,返回 result 与 sign 相乘的结果,即可得到最终结果。

华为OD机试真题 新系统2026-04-01 Python&JS 实现【勇攀数字高峰】 请你在给定的数字地形图中寻找登山路径,数字代表当前位置的海拔高度,要求从最低海拔出发,不断攀登,最终到达最高山峰。你需要寻找所有满足条件的登山路径。地图已经保证最低海拔和最高山峰都只有一个。 阅读详情

相关推荐

深信服AF设置安全防护策略

防火墙设置安全防护策略,禁止用户访问指定网站

m0_64423407的博客 4843

100题题解(JAVA) 08 字符串转换成整数

# LeetCode 100题题解(JAVA) 08 字符串转换成整数 文章目录# LeetCode 100题题解(JAVA) 08 字符串转换成整数前言一、题目描述二、解题思路1.防止越界,注意截取2.字符数字与整型数字的转换3.代码如下总结 前言 提示:简单记录一下答案和思路,参考或者复制网上的思路。 提示:以下是本篇文章正文内容,下面案例可供参考 简单记录一下答案和思路。 一、题目描述 请你来实现一个 myAtoi(string s) 函数,使其能将字符串转换成一个 32 位有符号整数(类似

vitodew的博客 670

win10任务栏文件夹设置成竖形列表样式

win10任务栏文件夹设置成竖形列表样式

ftzchina的博客 7081

【力扣LeetCode】8 字符串转换整数 (atoi)

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

Jiewang的博客 224

合并数组与非合并数组——SystemVerilog

合并型数组(packed): — 合并型数组可以实现连续的存储,赋值时不需要用 '{ }。 //合并型数组 bit [3] [7:0] b_pack // 表示3行 x 8列的数组,[3]是高维度(高维度),[7:0]是低维度(第一维) 数组中,数据排列为{b_pack[3],b_pack[2],b_pack[1],b_pack[0]},其中每个b_pack为8个bit; bit是二值逻辑,每位bit只占据1位。故24位bit只占据一个word(一般一个word为32bit)的存储空间

SummerXRT的博客 7638

WRF-Chem新手避坑指南:从chem_opt到emiss_opt,那些手册里没明说的参数配置实战

本文为WRF-Chem新手提供从chem_opt到emiss_opt的参数配置实战指南,解析官方文档中未明确的常见陷阱与解决方案。通过华北重霾案例,详细讲解化学机制选择、排放源配置及特殊参数组合的注意事项,帮助用户避开常见错误,提升模拟效率。

weixin_30897079的博客 281

力扣leetcode 字符串转换整数 (atoi)

在这里记录我所写过的每一段代码 2020/9/19 leetcode-初级算法-字符串-字符串转换整数 (atoi) 基本思想,分情况进行处理,每种情况的实现都类似。 注意:leetcode如果溢出会报错,我使用的VS溢出则为负数。 代码 int myAtoi(char* str) { int len,i,num; len = strlen(str); i = 0; num = 0; while (str[i] == 32 && i < len) { i++; } i

weixin_44033321的博客 123

Unity物理引擎实战:从刚体重心到碰撞体,打造真实不倒翁交互

刚体(Rigidbody)是Unity物理系统的核心组件,它定义了游戏对象的物理属性,如质量、阻力和碰撞响应。其原理基于牛顿力学,通过物理引擎(如PhysX)实时计算物体的运动状态。在游戏开发中,刚体的价值在于能够模拟真实世界的物理行为,为玩家提供沉浸式的交互体验。碰撞体(Collider)则定义了物体的形状边界,用于检测与其他物体的接触。通过精细调整刚体的重心(Center of Mass)和碰撞体形状,开发者可以模拟出各种有趣的物理现象,例如低重心物体的动态平衡。这在休闲游戏、物理玩具模拟等场景中尤为实

weixin_33976326的博客 355

力扣LeetCode刷题6 字符串转换整数 (atoi)

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

qq_33891314的博客 207

AI应用架构师收藏:大规模AI系统AIOps智能运维的4个落地案例

本文精选互联网、金融、制造、电信四大行业的大规模AI系统AIOps落地案例,覆盖云原生AI平台、风控AI系统、工业AI质检、5G网络AI优化等典型场景。行业背景与系统规模:业务目标、AI系统架构、运维挑战;AIOps解决方案设计:数据采集层→分析层→决策层的全栈架构,技术栈选型与理由;核心技术实现细节:异常检测算法、根因分析模型、自动化恢复流程(含Python代码示例);实施效果与经验总结:关键指标对比、踩坑教训、架构师视角的最佳实践。

AI天才研究院 856

ChangeMamba训练调试

此仓库的代码是在 Linux 系统下运行的。我们尚未测试是否能在其他操作系统下运行。 首先需要安装VMama仓库。以下安装顺序取自VMama仓库。克隆该版本库并导航至项目目录: 建议设置 conda 环境并通过 pip 安装依赖项。使用以下命令设置环境: 创建并激活新的 conda 环境 安装依赖项 检测和分割任务的依赖库(在 VMamba 中为可选项) 二、下载预训练权重 另外,请下载VMamba-Tiny, VMamba-Small, and VMamba-Base在ImageNet上的预训练权重并把它

hanfeng5268的博客 576

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

请你来实现一个函数,使其能将字符串转换成一个 32 位有符号整数(类似 C/C++ 中的atoi函数)。函数0−231−231231 − 1231 − 1' 's = "42"42加粗的字符串为已经读入的字符,插入符号是当前读取的字符。第 1 步:"42"(当前没有读入字符,因为没有前导空格)第 2 步:"42"(当前没有读入字符,因为这里不存在 '-' 或者 '+')第 3 步:"42"(读入 "42")解析得到整数 42。

qq_45200515的博客 1195

核心组件大换血:Backbone与Neck魔改篇:YOLO26结合StarNet结构:2026星状网络在YOLO生态的即插即用实战

本文将介绍如何将StarNet作为Backbone替换YOLO26原生架构,以提升边缘设备上的目标检测性能。文章首先分析了YOLO26在特定场景下的精度瓶颈,指出其通用Backbone设计存在不足。随后深入解析StarNet的核心创新——星操作(Star Operation),这一低维计算却能获得高维特征表达的数学魔术,以及其极简的StarBlock模块设计。通过对比YOLO26原生架构的三大创新与痛点,作者提出两种替换策略:完整替换Backbone或局部替换+Neck联调。文中提供了StarNet核心代码

ZDQ58818的博客 290

力扣(leetcode 8)字符串转换整数 (atoi) python

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

qq_41318002的博客 417

pscad IEEE标准系统搭建说明

pscad IEEE标准系统搭建说明,包含典型的IEEE 9节点、14节点、30节点、39节点和118节点系统。内含标准测试系统的原始数据和潮流结果。

Devexpress16.2.6破解工具

Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具

【LeetCode/力扣】8. 字符串转换整数 (atoi)

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

积流成河 160

efm32 入门.pdf

本PDF共计22页,介绍的是操作驱动API,下载与否自己斟酌。

Leetcode — 字符串转换整数(atoi)

虽入大厂好多年,但算法不刷还是不会。人到中年,加上最近周围同事接连的被毕业,有那么一点压力,平时还是要有一点忧患意识。坚持学习,坚持进步,点赞 + 关注,你我工作永不愁!

qq_39941677的博客 929

廖雪峰Python教程[完整版]

廖雪峰的python教程整理的,已经排好版了,而且还是完整的,适合小白

C++ 把字符串转换成整数 (atoi) - 力扣(LeetCode)

第 2 步:"4193 with words"(当前没有读入字符,因为这里不存在 '-' 或者 '+')由于 "-42" 在范围 [-231, 231 - 1] 内,最终结果为 -42。第 1 步:"4193 with words"(当前没有读入字符,因为没有前导空格)由于 "42" 在范围 [-231, 231 - 1] 内,最终结果为 42。第 2 步:"42"(当前没有读入字符,因为这里不存在 '-' 或者 '+')第 1 步:"42"(当前没有读入字符,因为没有前导空格)"(读入 "42")

SikJ_2020_10_24的博客 929

LeetCode 字符串转换整数 (atoi)

关于字符串转换整数 (atoi)问题的解题思路与实现。

"大梦三千秋的博客 506

【LeetCode力扣】008.字符串转换整数 (atoi)(Python)

第 2 步:"1337c0d3"(当前没有读入字符,因为这里不存在 '-' 或者 '+')第 2 步:"0-1" (当前没有读入字符,因为这里不存在 '-' 或者 '+')第 2 步:"42"(当前没有读入字符,因为这里不存在 '-' 或者 '+')第 1 步:"1337c0d3"(当前没有读入字符,因为没有前导空格)第 1 步:"0-1" (当前没有读入字符,因为没有前导空格)第 1 步:"42"(当前没有读入字符,因为没有前导空格)加粗的字符串为已经读入的字符,插入符号是当前读取的字符。

Yophan的博客 1115

力扣(LeetCode):字符串转换整数 (atoi)

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

ctrigger的专栏 936

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

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

韩旭051的博客 706

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

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

南 墙 1万+

力扣刷题(python)50天——第五天:字符串转换整数 (atoi)

力扣刷题(python)50天——第五天:字符串转换整数 (atoi) 题目描述 请你来实现一个 atoi 函数,使其能将字符串转换成整数。 首先,该函数会根据需要丢弃无用的开头空格字符,直到寻找到第一个非空格的字符为止。 当我们寻找到的第一个非空字符为正或者负号时,则将该符号与之后面尽可能多的连续数字组合起来,作为该整数的正负号;假如第一个非空字符是数字,则直接将其与之后连续的数字字符组合起来,...

weixin_44568780的博客 341

【LeetCode: 8. 字符串转换整数 (atoi) + 模拟】

【LeetCode: 8. 字符串转换整数 (atoi) + 模拟】请你来实现一个 myAtoi(string s) 函数,使其能将字符串转换成一个 32 位有符号整数。 函数 myAtoi(string s) 的算法如下: - 空格:读入字符串并丢弃无用的前导空格(" ") - 符号:检查下一个字符(假设还未到字符末尾)为 '-' 还是 '+'。如果两者都不存在,则假定结果为正。 - 转换:通过跳过前置零来读取该整数,直到遇到非数字字符或到达字符串的结尾。如果没有读取数字,则结果为0。 - 舍入:如果

Coder_ljw的博客 1484

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

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

疯狂的兔子 492

LeetCode 字符串转换整数(atoi)

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

qq_29760277的博客 109
上一篇: 【LeetCode】字符串转换整数 (atoi)
下一篇: 【华为OD-c/c++面经】——嵌入式软件开发
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值