题目描述
将一个字符串转换成一个整数(实现Integer.valueOf(string)的功能,但是string不符合数字要求时返回0),要求不能使用字符串转换整数的库函数。
数值为0或者字符串不是一个合法的数值则返回0。输入描述: 输入一个字符串,包括数字字母符号,可以为空
输出描述: 如果是合法的数值表达则返回该数字,否则返回0
示例1
输入
+2147483647
1a33
输出
2147483647
0
Java版本1
public class Solution {
public static int StrToInt(String str) {
int result = 0;
int isNegativeNum= 1;
char[] s = str.toCharArray();
int len = s.length;
if(len == 0)
return 0;
if(s[0] == '-')
isNegativeNum = -1;
for(int i = (s[0] == '+' || s[0] == '-') ? 1 : 0; i < s.length; i ++){
if( (s[i] < '0' || s[i] > '9') ){
return 0;
}else{
result = result + (int)((s[i] - '0') * Math.pow(10, s.length - 1 - i));
}
}
result *= isNegativeNum ;
if(result >= Integer.MIN_VALUE && result <= Integer.MAX_VALUE)
return result;
return 0;
}
};
Java版本2
public class Solution {
public static int StrToInt(String str) {
int result = 0;
int isNegativeNum= 1;
char[] s = str.toCharArray();
int len = s.length;
if(len == 0)
return 0;
if(s[0] == '-')
isNegativeNum = -1;
for(int i = (s[0] == '+' || s[0] == '-') ? 1 : 0; i < s.length; i ++){
if( (s[i] < '0' || s[i] > '9') ){
return 0;
}else{
//等价于result = result + (int)((s[i] - '0') * Math.pow(10, s.length - 1 - i));
result = (result << 1) + (result << 3) + (s[i] & 0xf);
}
}
result *= isNegativeNum ;
if(result >= Integer.MIN_VALUE && result <= Integer.MAX_VALUE)
return result;
return 0;
}
};