[编程题]把字符串转换成整数
把字符串转换成整数
http://www.nowcoder.com/questionTerminal/1277c681251b4372bdef344468e4f26e
//参考jDK1.5的Integer.parseInt()源码
public class Solution {
public int StrToInt(String str) {
//如果字符为空字符串
if(str==null){
return 0;
}
//字符串长度
int length=str.length();
//字符串转整数值的大小限制
int limit=-Integer.MAX_VALUE;
//定义变量存储每一位的字符转成的数值
int digit=0;
//返回的结果
int result=0;
int mulmin=0;
//标志位判断该字符串是不是负数
boolean negative=false;
//定义指向字符串中字符的指针
int index=0;
//如果字符中有字符
if(length>0){
//判断第一个字符是不是'+'或者'-'
char firstChar=str.charAt(0);
if(firstChar<'0'){
if(firstChar=='-'){
negative=true;
limit=Integer.MIN_VALUE;
}else if(firstChar!='+'){ //不为'+'
return 0;
}
if(length==1){ //第一个字符既不是'+'和'-'
return 0;
}
//如果字符串第一个字符为'+'或者'-'
index++;
}
mulmin=limit/10;
//移动指针继续判断后面的字符
while(index<length){
digit=str.charAt(index++)-'0';
//判断digit是不是数字
if(digit<0||digit>9){
return 0;
}
//判断溢出
if(result<mulmin){
return 0;
}
result*=10;
if(result<limit+digit){
return 0;
}
result-=digit;
}
}else{
return 0;
}
return negative? result:-result;
}
}
查看13道真题和解析
