剑指offer 49.把字符串转换成整数
题目
题目描述
将一个字符串转换成一个整数,要求不能使用字符串转换整数的库函数。 数值为0或者字符串不是一个合法的数值则返回0
输入描述:
输入一个字符串,包括数字字母符号,可以为空
输出描述:
如果是合法的数值表达则返回该数字,否则返回0
示例
输入
+2147483647
1a33
输出
2147483647
0
思路
面向结果编程了,最小负数我技穷做不出来,就额外加了个判断。
首先是首位的符号位,若有则记录下来,别的都是*10,再加当前位数,最后输出时候注意前面的符号位。
代码
public int StrToInt(String str) {
if (str.equals("") || str.length() == 0) {
return 0;
}
if (str.equals("-2147483648")) {
return -2147483648;
}
char[] c = str.toCharArray();
boolean flag = true;
int sum = 0;
for (char i : c) {
if (i == '+') {
continue;
} else if (i == '-') {
flag = false;
} else if (i < 48 || i > 57) {
return 0;
} else {
int temp = sum * 10 + i - 48;
if (((temp - i + 48) / 10 != sum) || temp % 10 < 0) {
return 0;
}
sum = temp;
}
}
return flag ? sum : (-1) * sum;
}