题目描述:
将一个字符串转换成一个整数,要求不能使用字符串转换整数的库函数。 数值为0或者字符串不是一个合法的数值则返回0
输入:
“+123”
“-123”
“12a”
“12+”
输出:
123
-123
0
0
import static java.lang.Character.isDigit;
public class Solution {
public int StrToInt(String str) {
char [] ch = str.toCharArray();
int len = str.length();
if(len == 0){
return 0;//空字符串
}
int i = 0;
while(i < len && ch[i] == ' '){//处理空格开头的情况
i++;
}
if(i == len ){
return 0;
}
//首个字符不是数字,也不是+ - 号
if(! ( isDigit( ch[i] ) ) && ch[i] != '+' && ch[i] != '-'){
return 0;
}
boolean neg = false;//记录是否负数,先全按正数处理,事后看情况加-
//首字符为 -
if(i < len && ch[i] == '-'){
neg = true;
i++;
}
// 首字符为 +
if(i < len && ch[i] == '+'){
i++;
}
int ans = 0;
while(i < len && isDigit(ch[i])){
ans = ans * 10 + ( ch[i] - '0' );
i++;
}
if(i != len ){
return 0;
}
if(neg){
ans = - ans;
}
return ans;
}
}