LeetCode (力扣) 8. String to Integer (atoi) ( C ) - Medium

Java最长回文子串的工程化实现与JVM级优化 最长回文子串是字符串处理中的经典问题,其本质在于识别具有中心对称特性的连续字符序列。从算法原理看,中心扩展法以O(n²)时间复杂度平衡了性能与可维护性;在Java工程实践中,String不可变性、substring内存行为、JDK版本差异及Unicode代理对处理等底层机制,直接决定方案是否具备生产就绪能力。该问题的技术价值不仅在于算法选型,更在于驱动开发者深入理解JVM内存模型、HotSpot JIT优化策略与高并发安全设计。典型应用场景涵盖内容审核中的恶意词检测、金融流水异常识别、IoT日志结构校验等。 阅读详情

同步发于 JuzerTech 网站,里面有我软、硬件学习的纪录与科技产品开箱,欢迎进去观看。

题目为给定一个字符串,把它转换成整数型态,复现 C语言中的 atoi() 函数。

这题的测资有点复杂,要考虑的情况有点多。

题目与范例如下

 

Implement the myAtoi(string s) function, which converts a string to a 32-bit signed integer (similar to C/C++'s atoi function).

The algorithm for myAtoi(string s) is as follows:

Read in and ignore any leading whitespace.
Check if the next character (if not already at the end of the string) is '-' or '+'. Read this character in if it is either. This determines if the final result is negative or positive respectively. Assume the result is positive if neither is present.
Read in next the characters until the next non-digit charcter or the end of the input is reached. The rest of the string is ignored.
Convert these digits into an integer (i.e. "123" -> 123, "0032" -> 32). If no digits were read, then the integer is 0. Change the sign as necessary (from step 2).
If the integer is out of the 32-bit signed integer range [-231, 231 - 1], then clamp the integer so that it remains in the range. Specifically, integers less than -231 should be clamped to -231, and integers greater than 231 - 1 should be clamped to 231 - 1.
Return the integer as the final result.
Note:

Only the space character ' ' is considered a whitespace character.
Do not ignore any characters other than the leading whitespace or the rest of the string after the digits.


Example 1:

Input: s = "42"
Output: 42
Explanation: The underlined characters are what is read in, the caret is the current reader position.
Step 1: "42" (no characters read because there is no leading whitespace)
^
Step 2: "42" (no characters read because there is neither a '-' nor '+')
^
Step 3: "42" ("42" is read in)
^
The parsed integer is 42.
Since 42 is in the range [-231, 231 - 1], the final result is 42.
Example 2:

Input: s = " -42"
Output: -42
Explanation:
Step 1: " -42" (leading whitespace is read and ignored)
^
Step 2: " -42" ('-' is read, so the result should be negative)
^
Step 3: " -42" ("42" is read in)
^
The parsed integer is -42.
Since -42 is in the range [-231, 231 - 1], the final result is -42.
Example 3:

Input: s = "4193 with words"
Output: 4193
Explanation:
Step 1: "4193 with words" (no characters read because there is no leading whitespace)
^
Step 2: "4193 with words" (no characters read because there is neither a '-' nor '+')
^
Step 3: "4193 with words" ("4193" is read in; reading stops because the next character is a non-digit)
^
The parsed integer is 4193.
Since 4193 is in the range [-231, 231 - 1], the final result is 4193.
Example 4:

Input: s = "words and 987"
Output: 0
Explanation:
Step 1: "words and 987" (no characters read because there is no leading whitespace)
^
Step 2: "words and 987" (no characters read because there is neither a '-' nor '+')
^
Step 3: "words and 987" (reading stops immediately because there is a non-digit 'w')
^
The parsed integer is 0 because no digits were read.
Since 0 is in the range [-231, 231 - 1], the final result is 0.
Example 5:

Input: s = "-91283472332"
Output: -2147483648
Explanation:
Step 1: "-91283472332" (no characters read because there is no leading whitespace)
^
Step 2: "-91283472332" ('-' is read, so the result should be negative)
^
Step 3: "-91283472332" ("91283472332" is read in)
^
The parsed integer is -91283472332.
Since -91283472332 is less than the lower bound of the range [-231, 231 - 1], the final result is clamped to -231 = -2147483648.


Constraints:

0 <= s.length <= 200
s consists of English letters (lower-case and upper-case), digits (0-9), ' ', '+', '-', and '.'.

 

我的解题方法为先考虑溢位的问题,在考虑空白跟正负号,并于判断正负号的函式内,判断后面是否有接正负号或其他字元。

 

下方为我的代码

int myAtoi(char * s){
    int total = 0;
    bool negative = false,yn = false;
    for(int i = 0;i<strlen(s);i++){
        if(s[i]==' '){
            if(yn == true)
                break;
        }
        else if(s[i]=='-'){
            if(yn == true){
                if(s[i-1]=='-'||s[i-1]=='+')
                    return 0;
                else
                    return total;
            }
            negative = true;
            yn = true;
        }
        else if(s[i]=='+'){
            if(yn == true){
                if(s[i-1]=='-'||s[i-1]=='+')
                    return 0;
                else
                    return total;
            }
            yn = true;
        }
        else if(s[i]>='0'&&s[i]<='9'){
            yn = true;
            if(total > 214748364 ||  total < -214748364){
                if(negative==true)
                    return INT_MIN;
                else
                    return INT_MAX;
            }
            else{
                total*=10;
                if(negative == true){
                    if(total<-2147483648+(s[i]-'0')){
                        return INT_MIN;
                    }
                    total-=(s[i]-'0');
                }
                else{
                    if(total>2147483647-(s[i]-'0')){
                        return INT_MAX;
                    }               
                    total += (s[i]-'0');
                }
            }
        }
        else{
            break;
        }
    }
    
    return total;
}

 

下方为时间与空间之消耗

Runtime: 4 ms, faster than 59.13 % of C online submissions for String to Integer ( atoi ) .

Memory Usage: 5.5 MB, less than 92.37 % of C online submissions for String to Integer ( atoi ).

Git下载安装及环境配置,解决安装包下载慢问题(详细版) Git是我们平时开发都要用到的项目管理工具,虽然有网页版的Git网站,但是在本地安装Git后,可以直接使用命令语句来进行项目的上传与克隆。还是非常方便的。今天就来介绍下Git的下载。1、首先在浏览器中搜索Git,进入到Git的官方下载界面或者直接复制下面这个链接。 2、点击download进入下载界面,选择自己需要平台的文件 3、下载标准版就可以4、但是会发现下载速度很慢,就找个镜像版 5、点击 https://registry.npmmirror.com/binary.html?path=git-for- 阅读详情

相关推荐

动手学Moveit2 | 运行配置好的机械臂功能demo

通过这个小demo你可以直观的感受moveit2的强大,但还有很多需要我们探索的,比如机械臂是如何规划的,规划的过程中如何结合环境信息,规划的时候机械臂如何求解,如何和真实的机械臂对接等等,这些都需要你来进一步探索,今天就到这里,明天给大家秀一下小仙女焊的fishbot运控板。

生活不止眼前的苟且 8880

String与Integer相互转换

String与Integer相互转换 //方法一:Integer类的静态方法toString() Integer a = 2; String str = Integer.toString(a) //方法二:Integer类的成员方法toString() Integer a = 2; String str = a.toString(); //方法三:String类的静态方法valueOf() ...

雨果的博客 9万+

AIDD机器学习深度学习药物发现与设计教程总结

AIDD(AI Drug Discovery & Design):是近年来非常火热的技术应用,且已经介入到新药设计到研发的大部分环节当中,为新药发现与开发带来了极大的助力。倾向于机器对数据库信息的自我学习,可以对数据进行提取和学习,一定程度上避免了化合物设计过程中的试错路径,同时还会带来很多全新的结构,为药物发现打破常规的结构壁垒。覆盖了机器学习和深度学习,能与新药研发相结合并实质性的应用到靶点预测、高通量筛选、药物设计、药物的ADMET性质预测等;且算力方面,由早期应用于药物发现领域的决策树、随机

wutianlin0723的博客 6817

Java中从String到Integer的转换

Given a string value and we have to convert it into an integer. 给定一个字符串值,我们必须将其转换为整数。 Java conversion from String to Integer Java从String到Integer的转换 To convert a String to Integer, we can use the f...

781

光模块数字诊断监控(DDM)功能

DDM(Digital Diagnostic Monitoring)数字诊断监控,由行业组织SFF Committee制定,遵循SFF-8472多源协议定义的标准参数而工作,规范了光模块和网络设备的软硬件所需遵循的标准数值或范围,确保了网络设备供应商和光模块供应商之间所提供产品的互操作性不同。:通过监测激光器的偏置电流来预测激光器的劣化,从而确保在故障发生之前将业务切换到备用链路上或替换有可能故障的光模块,因此起到了预测光模块寿命的作用。光模块DDM信息可以通过SNMP读取光模块的接收光功率和发射光功率。.

光模块的博客 2300

YOLOv11 改进 - 注意力机制 | LS-YOLO MSFE 多尺度特征提取模块:并行分支结构增强多尺度感知,优化遥感与小目标检测

本文介绍了一种用于滑坡检测的模型LS-YOLO及其在YOLOv11中的结合应用。LS-YOLO首先构建多尺度滑坡数据集MSLD,为模型训练提供丰富数据。设计了基于高效通道注意力、平均池化和空间可分离卷积的多尺度特征提取模块MSFE,充分提取滑坡特征信息。在解耦头中采用膨胀卷积增加模型感受野。我们将MSFE模块集成进YOLOv11,替换部分原有模块。实验表明,改进后的YOLOv11在数据集中表现出色 。

魔改工程师的博客 870

8. String to Integer

题目描述(中等难度) 大意:将一个字符串转为整型。 这道题,难度不大,整体的思路就是遍历字符串,然后依次取出一个字符就可以了。 下面我们分几种情况来讨论下: 1.如果字符串本身全部是数字,我们把sign=1作为判断数字符号的依据,如果是正数sign不变,如果是负数,那么sign=-1,最后的结果乘以这个符号即可。 2.如果字符串包含其他符号和数字。假设前面出现的是类似‘+’,‘-’,‘ ’这样的...

猫敷雪 280

裂缝二维检测:裂缝的长度和宽度检测

这一节,我们需要去整合一下前面的代码,在进行长度和宽度的测量时,需要裂缝的类型、个数、面积的帮助。这一章是本专栏的核心部分。以上代码我均试过,由于本人能力有限,看不懂代码,最终还是没有采用,使用的是最普通检测宽度的方法,即求得骨架总长度后,用总面积求取平均宽度。

m0_62919535的博客 4242

【Leetcode-python】8.String to Integer(字符串转化为整数)

题目:实现一个将字符串转换为整数的函数atoi。 该函数首先丢弃空白字符,直到找到第一个非空白字符。然后,从该字符开始,采用可选的初始加号或减号,后跟尽可能多的数字,并将它们解释为数值。 字符串可以包含在形成整数之后的其他字符,这些字符将被忽略并且对此函数的行为没有影响。 如果str中的第一个非空白字符序列不是有效的整数,或者由于str是空的或者只包含空格字符而不存在这样的序列,则不执行转换...

vita2dolce的博客 2304

【安全设备篇】HVV面试专题

还有就是这个可能是被访问的这个内网系统,本身业务系统存在业务逻辑问题,因为内网所布置的很多业务系统往往不会考虑一些安全性问题,比如在正常的业务逻辑请求中直接带了sql语句,就会触发设备规则产生告警,这一类是属于误报,然后会将此告警上报给研判人员,需要研判组专家和甲方客户确认下是否是该系统存在此业务逻辑问题,并且需要确认告警的源ip在此告警的时间段附近有没有进行操作过。天眼日志分析主要基于系统和应用程序的日志数据来识别安全威胁,而威胁感知则通过收集和分析多种来源的情报信息。理解威胁的性质和威胁背后的原理。

大河之犬的博客 7924

Anomalib实战之一:自定义数据集

Anomalib支持多种图像扩展名,如".jpg"、“.jpeg”、“.png”、“.ppm”、“.bmp”、“.pgm”、“.tif”、“.tiff"和”.webp"。可以从具有任何这些扩展名的图像中收集数据集。

mingo_敏 6233

字符串转换整数 (atoi)(String to Integer (atoi))

字符串转换整数 (atoi)(String to Integer (atoi))

weixin_45483328的博客 505

CXSMILES细则-用于在 SMILES 字符串后存储分子的特殊特征

Chemaxon 扩展 SMILES/SMARTS 用于在 SMILES 字符串后存储分子的特殊特征。任何信息都可以存储在 SMILES 字符串后,只要它们由空格或制表符字符分隔,因为 SMILES 解析器会忽略这些信息,或者将它们作为注释使用。扩展特征以以下格式存储:Chemaxon 的扩展 SMILES/SMARTS 不包含非 ASCII 字符,它们通常以字符代码 n 的形式被转义为 &#n;。在 S-group 中,ASCII 字符“,”、“;”、“|”、“{”、“}”也以这种方式转义。此外,符号“$

ASKCOS博客 401

【leetcode】8.String to Integer(atoi)(Medium)(C)

Description: Implement atoi which converts a string to an integer. The function first discards as many whitespace characters as necessary until the first non-whitespace character is found. Then, star...

AXIMI的博客 160

数学建模模型总结

这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

LeetCode Medium String to Integer(atoi)

Implement atoi which converts a string to an integer. The function first discards as many whitespace characters as necessary until the first non-whitespace character is found. Then, starting from this...

Lee.rw的博客 211

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

Leetcode-8: String to Integer

这道题的题目出的比较含糊,测试例子里面的情况都要特别注意。我的code写的太冗余,注释掉的code是Leetcode里面的,写的比较好。 #include &lt;iostream&gt; #include &lt;string&gt; #include &lt;climits&gt; using namespace std; int myAtoi(string str) { if ...

roufoo的博客 233

最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版

Part-E1-SDIO-Specification-Ver4.00-Final-120220.pdf:最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版,包括SDIO 接口的外设,SDIO 接口官方协议等。

LeetCode刷题(C++)——String to Integer (atoi)(Medium)

Implement atoi to convert a string to an integer. Hint: Carefully consider all possible input cases. If you want a challenge, please do not see below and ask yourself what are the possible input ca

YF_Li123的博客 703

leetcode 8. string-to-integer-atoi字符串转换整数 (atoi) python3

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

isabloomingtree的博客 205

LeetCode 93: Restore IP Addresses (DFS题)

Restore IP Addresses Medium Given a string s containing only digits, return all possible valid IP addresses that can be obtained from s. You can return them in any order. A valid IP address consists of exactly four integers, each integer is between 0 and.

roufoo的博客 174

网易Java提前批笔试复盘:考点解析与备考策略

在Java后端开发的学习路径中,理解核心机制远比死记硬背更重要。HashMap的底层存储与扩容逻辑、JVM内存区域划分、并发编程中锁的升级过程,都是笔试与面试的高频考察点。掌握这些基础原理,不仅能应对大厂校招中的客观题,还能为工程实践中的性能优化和故障排查提供扎实支撑。从集合框架到线程模型,从垃圾回收到类加载机制,系统化梳理知识脉络是提升竞争力的有效方式。本文以一次真实的网易Java开发工程师提前批笔试为样本,详细拆解题型分布、选择题重难点、编程题实战技巧以及备考时间规划,帮助读者了解大厂选拔风格,并为后续

386

AWS机器学习工程师实战指南:从MLS-C01备考到生产级MLOps落地

机器学习工程化是指将模型从实验环境可靠、可重复、可持续地部署为生产服务的过程。其核心原理在于打通数据工程、模型训练、服务部署与持续监控的全链路闭环,技术价值体现在降低运维成本、提升迭代效率、保障业务SLA。典型应用场景包括实时推荐、智能风控、IoT预测性维护等需低延迟、高可用ML服务的领域。在云原生架构下,Amazon Web Services提供SageMaker、Glue、Kinesis等深度集成服务,支撑端到端MLOps实践;而MLS-C01认证正是对这一能力体系的结构化验证,聚焦真实工作流中的服务协

weixin_30374009的博客 599

欢聚时代校招Java基础笔试题B卷详解:考点拆解与避坑指南

Java基础是互联网公司校招笔试的核心筛选维度,其背后考察的不只是语法记忆,更是对集合框架、异常处理、多线程与JVM底层机制的综合理解。从HashMap的数组+链表+红黑树结构,到synchronized的锁升级过程,再到finally块与return的执行顺序,每一个考点都直接映射到日常开发中的数据结构选型与代码健壮性设计。对于准备校招或工作后查漏补缺的开发者而言,通过典型笔试题系统梳理这些基础概念,比零散背诵八股文更有效。这套欢聚时代2017校招Java基础类B卷,正是围绕这些高频易错点展开,覆盖面向对

weixin_34408717的博客 414

贝壳找房Java春招笔试题复盘:核心考点与避坑指南

Java基础知识是各类技术面试的基石,集合框架、并发编程、JVM内存模型等底层原理构成了后端开发的核心能力。掌握这些机制不仅能应对笔试中的选择题和编程题,更能指导线上系统的性能调优与异常排查。在Spring、MySQL、Redis等常用组件中,事务失效场景、索引结构、缓存穿透等问题直接影响高并发业务下的稳定性,也是大厂笔试的高频出题点。本文以贝壳找房2023年Java春招笔试题为样本,从出题人视角拆解题型分布、考察意图与常见陷阱,覆盖集合、并发、JVM、框架及系统设计等核心模块,并提供可落地的备考路线与答题

weixin_34413802的博客 407

搜狐畅游2019校招Java笔试题全解析:从基础到JVM的考点拆解

在Java后端开发的学习路径中,掌握核心基础知识与解决实际运行问题是进阶的关键。从面向对象特性、集合框架到并发编程,再到JVM内存管理与垃圾回收,这些概念构成了Java技术体系的地基。理解HashMap的扩容机制、线程池的参数设计以及类加载的双亲委派,不仅能应对笔试中的高频考点,更能指导日常开发中的性能调优与故障排查。同时,环境配置与常见报错处理也是开发者必须跨越的门槛,比如内存溢出异常、JDK版本不匹配导致的编译错误等,都需要系统性地理解其成因与解决思路。本文以搜狐畅游2019校招Java笔试题为样本,逐

weixin_34151004的博客 404

爱奇艺Java笔试复盘:从基础语法到并发与算法的考点全解析

Java作为企业级应用开发的主流语言,其语法基础、集合框架、JVM内存管理和并发编程能力,是衡量开发者技术水平的核心指标。在技术面试与笔试中,HashMap底层原理、线程池参数配置、快速排序实现等知识点反复出现,背后是对工程实践能力的深层考察。理解标识符规则、运算符隐式转换、枚举类型的使用以及Comparator自定义排序逻辑,能帮助开发者规避常见编码陷阱。掌握OutOfMemoryError的排查路径和JVM参数调优,是应对高并发场景下系统稳定性的关键能力。从基础语法到算法实现,系统梳理这些高频考点,本文

weixin_34228387的博客 352

LintCode 849 · Basic Calculator III (计算器好题,栈好题)

Lintcode 849:计算器好题,栈好题。

roufoo的博客 527
上一篇: LeetCode 7. Reverse Integer ( C ) - Easy
下一篇: LeetCode (力扣) 9. Palindrome Number ( C ) - Easy
JuzerTech
博客等级 码龄6年 7粉丝 34原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值