描述
将一个字符串转换成一个整数,要求不能使用字符串转换整数的库函数。 数值为0或者字符串不是一个合法的数值则返回0
输入描述:
输入一个字符串,包括数字字母符号,可以为空
返回值描述:
如果是合法的数值表达则返回该数字,否则返回0
示例1
输入: “+2147483647”
返回值: 2147483647
示例2
输入: “1a33”
返回值: 0
思路
主要考虑边界值,正负号,以及除数字外的其他字符
代码
public class Solution {
public int StrToInt(String str) {
if (str == null || str.length() == 0) {
return 0;
}
char [] strArr = str.toCharArray();
int index = 0;//遍历位置
int flag = 1;//代表正数
long res = 0;
while (strArr[index] == ' ') {
index++;
}
if (strArr[index] == '-' || strArr[index] == '+') {
if (strArr[index] == '-') {
flag = -1;
}
index++;
}
while (index < str.length()) {
if (strArr[index] - '0' < 0 || strArr[index] - '0' > 9) {
//存在数字以外其他字符 返回错误
return 0;
}
res = res*10 + (strArr[index] - '0');
if (res >= Integer.MAX_VALUE && flag == 1) {
return Integer.MAX_VALUE;
}
if (res > Integer.MAX_VALUE && flag == -1) {
return Integer.MIN_VALUE;
}
index++;
}
if (index == str.length()) {
return flag * (int)res;
}
return 0;
}
}