把字符串转换成整数
把字符串转换成整数
题目描述
将一个字符串转换成一个整数,要求不能使用字符串转换整数的库函数。 数值为0或者字符串不是一个合法的数值则返回0
输入描述:
输入一个字符串,包括数字字母符号,可以为空
输出描述:
如果是合法的数值表达则返回该数字,否则返回0
示例1
输入
[复制](javascript:void(0)😉
+2147483647
1a33
输出
[复制](javascript:void(0)😉
2147483647
0
这道题比较简单,但是要处理的特殊情况有些多
public class Solution {
public int StrToInt(String str) {
int length=str.length();
int index=0;
/*
题中说的“整数”指的就是int,为什么这里要声明long呢,就是因为下面有一处会使得ans是实际数字大小的十倍,需要 ans=ans/10;来减回源大小
*/
long ans=0;
/*
判断空字符串的情况
*/
if(length==0){
return 0;
}
boolean flag=true;
if(str.charAt(0)=='+'){
/*
判断只有符号的情况
*/
if(length>1)
index++;
else
return 0;
}else if(str.charAt(0)=='-'){
if(length>1){
index++;
flag=false;
}
else
return 0;
}
for(int i=index;i<length;i++){
int temp=str.charAt(i)-'0';
/*
判断非数字字符的情况
*/
if(temp>9||temp<0){
return 0;
}
ans+=temp;
ans*=10;
}
ans=ans/10;
if(!flag){
ans=ans*(-1);
}
/*
使用Integer的MAX_VALUE和MIN_VALUE类属性来判断是否超出int范围
*/
if(ans>Integer.MAX_VALUE||ans<Integer.MIN_VALUE){
return 0;
}
/*
将long转为int
*/
return (int)ans;
}
}

浙公网安备 33010602011771号