剑指offer-把字符串转换成整数
2018-04-02 15:52
246 查看
题目描述
将一个字符串转换成一个整数,要求不能使用字符串转换整数的库函数。 数值为0或者字符串不是一个合法的数值则返回0输入描述:输入一个字符串,包括数字字母符号,可以为空
输出描述:如果是合法的数值表达则返回该数字,否则返回0
地址:牛客链接
问题分析
这就是个边界条件考察题。考察是否考虑了全部情况。但遗憾的是,牛客的测试用例并不全。注意问题如下:
第一个字符是否为符号位,第一位可以是 ‘+’ , ‘-’ , 与 ‘0’~ ‘9’
最值得注意的是下溢出问题和上溢出问题
经验教训
边界条件一定要考虑完全下溢出与上溢出问题
代码实现
public class Solution { public int StrToInt(String str) { if(str == null || str.length() == 0) { return 0; } char[] chs = str.toCharArray(); long res = 0L; for (int i = 0; i < chs.length; i++) { if (i == 0 && (chs[i] == '+' || chs[i] == '-')) { continue; } int curNum = chs[i] - '0'; if(curNum > 9 || curNum < 0 ) { return 0; } if (curNum <= 9 && curNum >= 0) { //res = res * 10 + curNum; res = (res << 1) + (res << 3) + curNum; //检查无符号数是否越界:2^31 if (res > 0x80000000L) { return 0; } } //检查正数是否越界:2^31 - 1 if (chs[0] != '-' && res == 0x80000000L) { return 0; } } return (int)(chs[0] == '-' ? 0 - res: res); } }
相关文章推荐
- 剑指offer——面试题:把字符串转换为整数
- 剑指offer 面试题49 把字符串转换成整数
- 剑指offer 把字符串转换成整数
- 剑指Offer--049-把字符串转换成整数
- 剑指offer--把字符串转换成整数
- 【剑指offer】C语言:实现函数可以将一个字符串转换为对应的整数,如+1234输出1234
- 剑指offer — 把字符串转换成整数
- 【剑指offer-Java版】49把字符串转换为整数
- 【剑指offer】题目1508:把字符串转换成整数
- 剑指offer面试题(49)把字符串转换成整数
- (C++)剑指offer-49:把字符串转换成整数(综合)
- 剑指offer: 把字符串转换成整数
- 剑指offer 面试题49 把字符串转换成整数
- 剑指offer之字符串到整数的转换,例如输入字符串12345,输出整数12345.
- 剑指offer50题(把字符串转换成整数)
- 剑指offer 50 把字符串转换成整数
- 剑指offer-----将一个字符串转换成对应的整数(模拟atoi)
- 剑指offer面试题49 把字符串转换成整数 (java实现)
- 把字符串转换成整数 剑指offer
- 剑指Offer:面试题49 把字符串转换成整数