将一个字符串转换成一个整数,要求不能使用字符串转换整数的库函数。 数值为0或者字符串不是一个合法的数值则返回0
输入描述:
输入一个字符串,包括数字字母符号,可以为空
输出描述:
如果是合法的数值表达则返回该数字,否则返回0
输入例子:
+2147483647 1a33
输出例子:
2147483647 0
public class Solution {
public int StrToInt(String str) {
if (str.length() == 0 || str == null) {
return 0;
}
int symbol = 1; // 用来标识正负号
int result = 0; // 用来存放除了正负号外的数值
char[] in = str.toCharArray();
int start = 0;
if (in[0] == '+') {
start = 1;
symbol = 1;
}
if (in[0] == '-') {
start = 1;
symbol = -1;
}
for (int j = start; j < str.length(); j++) {
if (in[j] >= '0' && in[j] <= '9') {
result = result * 10 + in[j] - '0'; // in[j]-'0'是把in[j]对应的ascall码值减去0对应的ascall,比如in[j]=2,'2'-'0'=50-38=2
} else {
return 0;
}
}
return result * symbol;
}
}