一、题目描述
将一个字符串转换成一个整数,要求不能使用字符串转换整数的库函数。 数值为0或者字符串不是一个合法的数值则返回0
- 输入描述:
输入一个字符串,包括数字字母符号,可以为空
- 输出描述:
如果是合法的数值表达则返回该数字,否则返回0
二、思路分析及代码实现
先考虑字符串为空的情况
if(str==null||"".equals(str))
确定字符串中是否包含正负号,用标记符标记
然后计算字符串对应的值,若不是数字,则返回0。
最后判断是否超出了Int的范围。
使用到了这个函数:Character.digit(s[i],10)
public class Solution {
public int StrToInt(String str) {
if(str==null||"".equals(str))
return 0;
boolean isNeg=false;
if(str.charAt(0)=='+'){
str=str.substring(1);
}else if(str.charAt(0)=='-'){
isNeg=true;
str=str.substring(1);
}
char[] s=str.toCharArray();//字符串转为数组
double res=0;
for(int i=0;i<s.length;i++){
if(!Character.isDigit(s[i])){
return 0;
}else{
res=res+Math.pow(10,s.length-1-i)*(Character.digit(s[i],10));
}
}
if(isNeg==false){ //正数
if(res>Integer.MAX_VALUE)
return 0;
else return (int)res;
}else{
if((0-res)<Integer.MIN_VALUE)
return 0;
else return (int)(0-res);
}
}
}