每日一题(57) - 把字符串转换成整数

本文探讨如何实现将字符串转化为整数的功能,类似于 C 库函数 atoi。主要涉及判断数字正负、字符合法性以及防止溢出的两种方法。第一种方法是利用 long long 类型存储中间结果,第二种方法是在乘10操作前对比中间结果与最大值除10的结果,避免因溢出导致的错误判断。
摘要由CSDN通过智能技术生成

题目来自剑指Offer

题目:把字符串转换成整型数,与库函数atoi的功能类似

原型: int atoi(const char *nptr);

举例:

"123" : 123
"-123" : -123
"00123/2" : 123
"-123/2"; : -123
"-  123/2" :0
"10522545459" : 2147483647 越界
"2147483647"; : 2147483647 刚好不越界
"-21474836480"; : -2147483648;越界
"-2147483648"; : -2147483648 刚好不越界

除此之外,系统提供的函数还可以自动除去起始端的空格,Tab等字符,这里不再实现该功能
"  123" : 123
"  -123" : -123
总结下要实现的功能:

(1)遇到非法字符,直接输出目前已经转化成功的结果。

(2)越界后,直接输出最大值或最小值。

要注意的几个要点:

(1)判断数字的正负:检测字符串第一个字符是否为+或-

(2)判断字符的合法性,不合法直接返回。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值