把字符串转换成整数

把字符串转换成整数

题目描述

将一个字符串转换成一个整数,要求不能使用字符串转换整数的库函数。 数值为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;
    }
}
posted @ 2020-03-07 16:15  别再闹了  阅读(123)  评论(0)    收藏  举报