angular 字符串转换成数字_Day49:将字符串转换成整数

512a3613bc5baa9ebc796464a211fcde.png

剑指Offer_编程题——将字符串转换成整数

题目描述:

将一个字符串转换成一个整数,要求不能使用字符串转换整数的库函数。 数值为0或者字符串不是一个合法的数值则返回0

输入描述:

输入一个字符串,包括数字字母符号,可以为空

输出描述:

如果是合法的数值表达则返回该数字,否则返回0

示例1

输入:
+2147483647
1a33
输出:
2147483647
0

具体要求:

时间限制: C/C++ 1秒,其他语言2秒
空间限制: C/C++32M,其他语言64M

具体实现

思路一:

1、将输入的字符串转换成字符数组。从大下标开始,反向对每个字符逐个处理。

2、若当前字符的ASII码在[48-57],注意是闭区间。则代表当前字符是[0~9],继续判断下一个。

3、当遍历到下标为0的字符时,需要进行特殊情况的几个判断。包括是否越界,是否是临界值,是否为负号等。

接下来我们用Java实现其思路:

public 

代码效果图如图所示

31aecc3b0dc612df366b4f585f672b26.png

思路二:

1、 先判断首字符是否为负号。

2、 判断当前字符是否表示数字。

3、 (res << 1) + (res << 3) 即 res2+res8=res*10

4、[0-9]的二进制表示低四位刚好就是[0~9]。 (chs[i] & 0xf)即取低四位值。

接下来我们用java和python实现。

1、首先我们用java实现:

public 

代码效果图如图所示:

b32e25b4fe17bbb761af2024a212e2ab.png

2、接下来我们用python实现:

class 

代码效果图如图所示:

aa22bd0bf5cc53373c63b55a2b12cca1.png

总结

本题是主要考察字符串转化为整数,本题较为简单,不过需要我们注意的是int整型数据类型的范围,也就是在java中要考虑其溢出的情况。但是由于python中没有int这一类型,因此不存在溢出的情况,只需要考虑数字以及±*/这些运算符号的ASCII码。本道题我们应用了两种方法将其实现,首先就是将其存在数组里面,然后从右往左进行遍历,转换。另一种就是先判断负号,在进行判断是否为数字,并且通过java以及python两种方式将其实现。因此,我们在做题的时候,应该多次尝试各种方法,扩展自己的思维,写出优质的代码。总之,我们要继续加油,争取早日找到工作,Good Luck!!!

参考文献

[1]ouyangyanlan

[2]天举的博客

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值