数字问题5:将字符串转换为整数
Posted 纵横千里,捭阖四方
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了数字问题5:将字符串转换为整数相关的知识,希望对你有一定的参考价值。
这个也是非常经典的题,难度不大,但是难道一片。主要扣分点就是各类边界和异常情况考虑不周全。先看题目:
实现函数 atoi 。函数的功能为将字符串转化为整数 提示:仔细思考所有可能的输入情况。这个问题没有给出输入的限制,你需要自己考虑所有可能的情况。
按照题中的要求做就行了,总共分为3步 (1)先去掉字符串两边的空格 (2)然后判断符号 (3)最后读取数字。
public int atoi (String str) {
str = str.trim();//去掉前后的空格
//如果为空,直接返回0
if (str.length() == 0)
return 0;
int index = 0;//遍历字符串中字符的位置
int res = 0;//最终结果
int sign = 1;//符号,1是正数,-1是负数,默认为正数
int length = str.length();
//判断符号
if (str.charAt(index) == '-' || str.charAt(index) == '+')
sign = str.charAt(index++) == '+' ? 1 : -1;
for (; index < length; ++index) {
//取出字符串中字符,然后转化为数字
int digit = str.charAt(index) - '0';
//按照题中的要求,读入下一个字符,直到到达下一个非数字字符或到达输入的结尾。
//字符串的其余部分将被忽略。如果读取了非数字,后面的都要忽略
if (digit < 0 || digit > 9)
break;
//越界处理
if (res > Integer.MAX_VALUE / 10 || (res == Integer.MAX_VALUE / 10 && digit > Integer.MAX_VALUE % 10))
return sign == 1 ? Integer.MAX_VALUE : Integer.MIN_VALUE;
else
res = res * 10 + digit;
}
return sign * res;
}
以上是关于数字问题5:将字符串转换为整数的主要内容,如果未能解决你的问题,请参考以下文章