题目描述
将一个字符串转换成一个整数(实现Integer.valueOf(string)的功能,但是string不符合数字要求时返回0),要求不能使用字符串转换整数的库函数。 数值为0或者字符串不是一个合法的数值则返回0。
思路:
逐位判断,注意:
1.首位是否是符号位;2.字符'1'对应的数字是'1' - '0';3.考虑溢出。
public class Solution {
public int StrToInt(String str) {
if(str.length()==0||str==null) {
return 0;
}
int result=0;
if(str.charAt(0)=='+') {
result = getNum(str, 1);
}else if(str.charAt(0)=='-') {
result = -1*getNum(str, 1);
}else if(str.charAt(0)>'0'&&str.charAt(0)<='9') {
result = getNum(str, 0);
}else {
return 0;
}
/*牛客网上,把溢出的代码注释掉也运行成功
if(result<=Integer.MAX_VALUE && result>=Integer.MIN_VALUE) {
return result;
}else {
return 0;
}
*/
return result;
}
private int getNum(String str,int i) {//计算数值
int result = 0;
while(i<str.length()) {
if(str.charAt(i)>='0'&&str.charAt(i)<='9') {
result=result*10+(str.charAt(i)-'0');
}else {
return 0;
}
i++;
}
return result;
}
}