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 ).

【学习笔记】人群归因分数 PAF 以及combined PAF(更新) 在此推荐2篇发表在lancet以及jama子刊上的paf文章,这两篇文章套路是一样的,只是在不同国家进行。希望对大家学习PAF有所帮助,后面有新内容也会继续分享,也欢迎大家分享使用R语言计算PAF的经验~~~的时候,先建立了相关矩阵,再做主成分分析,得到communality。详细信息大家可翻阅原文。 阅读详情

相关推荐

中国1990-2021连续30年土地利用CLCD数据分享

CLCD(China Land Cover Dataset)数据集是由武汉大学黄昕老师基于Google Earth Engine上的335,709景Landsat数据制作的中国年度土地覆盖数据集。为了提高CLCD的时空一致性,还提出了一种包含时空滤波和逻辑推理的后处理方法。该数据集最大的优势在于每年30米的土地利用分类结果,且连续覆盖了30年时间。相比其他产品如GLC_FCS30、Global30、AGLC2000_2015、FROM-GLC10、ESA10、ESRI10等,CLCD在时间分辨率上更高。

qq_48539301的博客 1万+

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万+

SAP PS模块预算控制实战:为什么你的采购订单金额和预算占用对不上?

本文深入解析SAP PS模块中采购订单金额与预算占用偏差的常见问题,揭示承诺成本与实际成本的分流处理机制。通过实战案例和六步定位法,提供发票拆分、跨年度预算等典型场景的解决方案,并分享预防性配置框架和最佳实践,帮助企业有效控制预算偏差。

weixin_30363981的博客 516

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

开关电源EMC整改案例-辐射骚扰

2.4.1 获得原始数据。同样的分析可以应用在差模电流的情况, 唯一不同的是, 两根导线的磁场分布是相反的, 磁 场互相抵消, 由于导线中的电流大小相等, 产生的磁场 H 大小相同, 在互相靠近的情况下, 在磁 环内的两个感应磁场大小相同、方向相反, 因此合成之后的感应磁场 B 几乎为 0,对任意一根导 线而言,相当于是一段“无感导线”,对差模电流不会产生任何抑制作用。众所周知, 共模电感的匝数越多, 感量越大, 按道 理来说对共模干扰电流的抑制也会越强烈,对抗辐射 也越有利,然而事实真的如此吗?

经营范围: CTA、SRRC、CCC、移动、电信、联通入库 3497

中孚保密检查系统彻底卸载指南:绕过口令与清除内核残留

中孚保密检查系统是深度集成于Windows内核的合规管控软件,其卸载涉及用户态口令校验、内核态服务引擎与Ring 0级驱动自保三重机制。理解其基于SHA-256哈希的本地口令验证原理和zfsysflt.sys过滤驱动的加载逻辑,是实现无残留清理的技术前提。该系统具备高权限驻留特性,常规卸载工具无法触达驱动与服务层,易引发蓝屏、启动缓慢及新安全软件冲突等工程问题。典型应用场景包括涉密终端批量清退、安全研究环境重建及误装后紧急退出。本文聚焦‘口令绕过+手动清理’双轨方案,覆盖注册表、服务、驱动、文件与计划任务五

weixin_33508411的博客 1032

8. String to Integer

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

猫敷雪 280

CentOS7全隔离环境部署Nvidia Tesla A100 40G驱动与CUDA工具包实战

本文详细介绍了在CentOS7全隔离环境下部署Nvidia Tesla A100 40G显卡驱动与CUDA工具包的实战经验。通过构建本地YUM仓库、解决驱动依赖问题以及三重验证法,确保Tesla A100与CUDA 11.7的完美兼容。同时分享了Anaconda3离线部署技巧,帮助用户在隔离环境中高效搭建Python GPU开发环境。

weixin_27215337的博客 401

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

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

vita2dolce的博客 2304

使用 Python 爬取 Wikipedia 数据:抓取百科条目及其内容

维基百科的 API 提供了一些方便的接口,通过这些接口,我们可以轻松获取到维基百科的条目、类别、图片和其他相关信息。维基百科的 API 主要是基于 HTTP 请求的,通过向特定的 URL 发送 GET 请求来获取信息。:获取指定条目的内容。在本博客中,我们介绍了如何使用 Python 爬取维基百科的条目数据。通过使用 Wikipedia API 和网页抓取技术,我们能够高效地获取条目内容,并将其存储和分析。希望本篇教程能帮助你深入理解如何抓取和处理维基百科的数据。

2201_76125261的博客 475

智能车图像处理21-进阶篇13--正入十字补线2

这篇文章主要的正入十字补线与1基本相同,主要防止图像中双十字的问题。

taiyuezyh的博客 2033

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

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

weixin_45483328的博客 505

25、BDS-3卫星信号性能与PPP-B2b增强消息完整性分析

本文对BDS-3卫星信号性能及PPP-B2b增强消息的完整性进行了系统分析。评估了MEO、IGSO和GEO卫星的轨道与时钟精度,得出BDS-3总体SISRE为0.25 m,系统完整性可覆盖99.999%的误差。分析表明SIS中断主要由时钟调整和轨道机动引起,个别卫星存在因境外监测受限导致的非计划中断。通过自研解码软件对PPP-B2b增强消息进行采集与解析,实验结果显示BDS-3和GPS的平均历元完整性率均高于98.55%,其中卫星掩码和时钟校正消息的完整性率超过99.8%。研究还发现IGSO卫星相比MEO卫

quiet的专栏 145

【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

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

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

SAP B1中文培訓教材_SDK

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

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

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

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、付费专栏及课程。

余额充值