题目
这道题其实并不难,唯一的难点大概就是他的说明:“我们的环境只有32位”,所以我们只能使用int型
稍微分析一下,字符串中的空格是好处理的,直接用String的trim()方法就可以去除,接着就是对“-”,“+”和非数字字符的判断,之后则是将字符串中的数字转换为int型
思路还是比较清晰的
直接贴上代码:
class Solution {
public int myAtoi(String str) {
int result = 0,i = 0, symbol = 1;
str=str.trim();
if(str.length()==0) return 0;
if(str.charAt(i) == '-') {
i++;
symbol = -1;
}else if(str.charAt(i) == '+') i++;
while(i < str.length() && Character.isDigit(str.charAt(i))) {
int r = str.charAt(i) - '0';
if(result > Integer.MAX_VALUE / 10 || (result == Integer.MAX_VALUE / 10 && r > 7)) return symbol > 0 ? Integer.MAX_VALUE : Integer.MIN_VALUE;
result = result * 10 + r;
i++;
}
return symbol > 0 ? result : -result;
}
}
这段代码的精髓就在后面的几个判断中,由于较简单,我也就不再阐述,如果读者有疑惑,可以评论留言,我也都会一一回复的。