目的是实现将string转换成integer,如果输入+99,则输出为99,;如果输入-99,则输出为-99,且考虑溢出。
public class Solution {
public int myAtoi(String str) {
long result = 0;
if(str == null || str.length()<=0)
return 0;
String newstr = str.trim();
if(newstr.charAt(0) == '+'){
for(int i=0;i<newstr.length();i++) {
if (Character.isDigit(newstr.charAt(i)))
result = result*10 + (newstr.charAt(i) - '0');
else
break;
}
if (result > Integer.MAX_VALUE)
return Integer.MAX_VALUE;
else
return (int)result;
}
else if (newstr.charAt(0) == '-'){
for(int i=0;i<newstr.length();i++) {
if (Character.isDigit(newstr.charAt(i)))
result = result*10 + (newstr.charAt(i) - '0');
else
break;
}
result = result*-1;
if (result < Integer.MIN_VALUE)
return Integer.MIN_VALUE;
else
return (int)result;
}
else if (Character.isDigit(newstr.charAt(0))){
for(int i=0;i<newstr.length();i++) {
if (Character.isDigit(newstr.charAt(i)))
result = result*10 + (newstr.charAt(i) - '0');
else
break;
}
if (result > Integer.MAX_VALUE)
return Integer.MAX_VALUE;
else
return (int)result;
}
else
return 0;
}
}
我的代码如上图,为什么我输入+1100这种格式的数字后,输出仍旧是0?小弟新手刷lc,这道题已经卡了一晚上了,求解
for (int i = 0; i < newstr.length(); i++)
应该改成for (int i = 1; i < newstr.length(); i++)
, 因为按照你的描述,下标为0的字符应该是+
或者-
。