题目链接
题目描述
将一个字符串转换成一个整数,字符串不是一个合法的数值则返回 0,要求不能使用字符串转换整数的库函数。
Iuput:
+2147483647
1a33
Output:
2147483647
0
解题思路
public class Solution {
public int StrToInt(String str) {
if (str==null || str.length()==0) return 0;
boolean isNegative = str.charAt(0)=='-';
long res = 0;
for (int i=0;i<str.length();i++) {
char c = str.charAt(i);
if (i==0 && (c=='+' ||c=='-')) continue;
if (c>'9' || c<'0') return 0;
// 用来判断是否越界
if (isNegative && res>(Integer.MAX_VALUE+1-(c-'0'))/10) return 0;
if (!isNegative && res>(Integer.MAX_VALUE-(c-'0'))/10) return 0;
res = res*10 + (c-'0');
}
return isNegative? -(int)res: (int)res;
}
}