题目地址这里
这个题涉及到了乘法的溢出判断和加法的溢出判断。加法的溢出判断在我之前的reverse integer有
乘法溢出的判断。我仅仅是想到这样的一个方法。就是乘过来再除回去。
判断溢出的代码如下
resultTemp=result*10;
if(resultTemp/10!=result)
{
if(positive)
{
return 2147483647;
}
else
{
return -2147483648;
}
}
题目的解答代码如下
public class Solution {
public int myAtoi(String str) {
if(str==null)
{
return 0;
}
str=str.trim();
if(str.length()==0)
{
return 0;
}
boolean positive=true;
boolean haveFlag=false;
int result=0;
switch (str.charAt(0)) {
case '-':
positive=false;
haveFlag=true;
break;
case '+':
positive=true;
haveFlag=true;
break;
default:
if(Character.isDigit(str.charAt(0)))
{
positive=true;
haveFlag=false;
}
else
{
return 0;
}
break;
}
int i;
if(haveFlag)
{
i=1;
}
else
{
i=0;
}
int resultTemp;//乘法溢出检测用
while(i<str.length())
{
if(Character.isDigit(str.charAt(i)))
{
resultTemp=result*10;
if(resultTemp/10!=result)
{
if(positive)
{
return 2147483647;
}
else
{
return -2147483648;
}
}
if(positive)
{
result=resultTemp+str.charAt(i)-'0';
}
else
{
result=resultTemp-(str.charAt(i)-'0');
}
if(positive&&result<0)
{
return 2147483647;
}else if (!positive&&result>0)
{
return -2147483648;
}
}
else
{
return result;
}
i++;
}
return result;
}
}
本文介绍了一个涉及整数转换的编程挑战,重点在于如何正确处理乘法和加法运算中的溢出问题。通过具体实例展示了如何使用Java实现字符串到整数的转换,并提供了详细的代码解析。
232

被折叠的 条评论
为什么被折叠?



