LeetCode No.8 String to Integer (atoi)

本文详细介绍了如何实现一个atoi函数,该函数能够将一个包含数字和其他可能干扰字符的字符串转换成整数。文章通过逐步分析不同字符的处理逻辑,并讨论了边界条件和特殊情况的处理方法。

思想:

将String转换为char型数组,挨个字符进行比对,分情况处理:(用existNumber标记当前是否已出现过数字或有意义的正负号)

1. ' '

(1)当前未出现过数字时(existNumber为false):跳过继续处理

(2)出现在数字后(existNumber为true):结束符,返回判断越界后的结果


2. '0'-'9'

存入字符串result,existNumber设为true。


3. '-'/'+' (情况最多)

(1)当前未出现过数字时(existNumber为false):

                判断字符串下一位是否为数字,若是则为有意义的正负号,存入result;

                反之则为无意义字符,按题目要求返回0

(2)出现在数字后(existNumber为true):结束符,返回判断越界后的结果


4. 其他字符

(1)当前未出现过数字时(existNumber为false):无意义字符,按题目要求返回0

(2)出现在数字后(existNumber为true):结束符,返回判断越界后的结果



判断越界单独写成了一个函数,使用和上一题一样的方法,对字符串大小进行判断。(字符串比较长度要一致,不然不能体现出对应整数的大小)



遇到的问题:

1. ""和" "的处理

2. 因为输入为字符串类型,要注意 '0000000123' 等0开头的情况

3. 不能直接使用正数*(-1)作为负数,要考虑2147483648的情况对于正数是越界的,而-2147483648却不越界

4. '+' 虽然没有意义但也不能忘记处理



PS: 同样的Submission,第一回可以70%+,第二回就30%了,越提交多次越慢......
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值