(4)数字与溢出的处理。具体看代码
代码如下:
public static int myAtoi(String str)
{
int sign=1,base=0,index=0,digit=0;
//空字符串的处理
if (str.length()==0)
{
return 0;
}
//空格的处理
while (str.charAt(index)==' '&&index<str.length())
{
index++;
}
//确定符号
if (str.charAt(index)=='+'||str.charAt(index)=='-')
{
sign=str.charAt(index)=='+'?1:-1;
index++;
if (sign==1&&str.charAt(index)=='-')
{
return 0;
}
if (sign==-1&&str.charAt(index)=='+')
{
return 0;
}
}
//确定基数
for (int i = index; i < str.length(); i++)
{
char ch=str.charAt(i);
if (ch<'0'||ch>'9')
{
break;
}
digit = ch - '0';
if (ch>='0'&&ch<='9')
{
/*
* 溢出的处理
* (Integer.MAX_VALUE)/10<base,(Integer.MAX_VALUE)/10==base&&Integer.MAX_VALUE %10 <digit
* 分别表示两种会出现溢出的情况,特别是第二种2147483648时
*/
if ((Integer.MAX_VALUE)/10<base||(Integer.MAX_VALUE)/10==base&&Integer.MAX_VALUE %10 <digit)
{
if (sign==1)
{
return Integer.MAX_VALUE;
}
else
{
return Integer.MIN_VALUE;
}
}
base=10*base+digit;
}
}
return base*sign;
}leetcode——8 String to Integer (atoi)(自定义字符串转整型,如何避开各种奇葩输入)
原文地址:http://blog.csdn.net/zzc8265020/article/details/46618191