题目描述
将一个字符串转换成一个整数,要求不能使用字符串转换整数的库函数。 数值为0或者字符串不是一个合法的数值则返回0
输入描述:
输入一个字符串,包括数字字母符号,可以为空
输出描述:
如果是合法的数值表达则返回该数字,否则返回0
思路:考虑将字符串转换为字符数组,在判断时需要考虑以下两点:
- 第一位 是否有’+‘或’-’
- 是否每一位都是’0’-‘9’,若不是显然不对
最后要对转换后的数字判断是否在整数范围内。
public class Solution {
public int StrToInt(String str) {
char[] cs=str.toCharArray();
if(str.equals(""))return 0;
int sign=1;
long n=0; //可能超过整型范围
for(int i=0;i<cs.length;i++){
if(i==0){ //是否为正负号
if(cs[i]=='-'){
sign=-1;
continue;
}
if(cs[i]=='+')continue;
}
if(cs[i]>='0'&&cs[i]<='9'){
n=n*10+cs[i]-'0';
}else return 0;
}
return n*sign<=Integer.MAX_VALUE&&n*sign>=Integer.MIN_VALUE?(int)(n*sign):0;
}
}