题目描述
将一个字符串转换成一个整数,要求不能使用字符串转换整数的库函数。 数值为0或者字符串不是一个合法的数值则返回0.
解析:本题需要额外知识点,如数字的ASCII为48-57.将字符0-9转换为数字,则需要计算c=c-‘0’。
另外字符串转换为数组的代码为 char[] array=str.toCharArray();
public class Solution {
public int StrToInt(String str) {
if(str==null)return 0;
int sum=0; //当前的数
char[] array=str.toCharArray();
boolean minus=false;
for(int i=0;i<array.length;i++){
if(i==0&&array[i]=='-'){
minus=true;
}else if(i==0&&array[i]=='+'){
minus=false;
}else{
int a=array[i]-'0'; //得到当前的数字
if (a<0||a>9)return 0; //如果非数字,直接返回0
sum=(minus==false)?sum*10+a:sum*10-a;
if((!minus&&sum>Integer.MAX_VALUE)||
(minus&&sum<Integer.MIN_VALUE))return 0;
//如果sum大于int的最大值,或者小于最小值,返回0
}
}
return sum;
}
}