49.把字符串转换成整数(java)

题目描述

将一个字符串转换成一个整数,要求不能使用字符串转换整数的库函数。 数值为0或者字符串不是一个合法的数值则返回0

输入描述:

输入一个字符串,包括数字字母符号,可以为空

输出描述:

如果是合法的数值表达则返回该数字,否则返回0

输入

+2147483647
    1a33

输出

2147483647
    0

 解题思路

普通的将字符串转换成数字,但是要注意正负号。

注意:判断条件要注意空字符串和溢出。

public class Solution {
    public int StrToInt(String str) {
        if(str.length() == 0 || str.equals(""))	return 0;
        char[] s1 = str.toCharArray();
        int sum = 0;
        boolean flag = true;
        int start = 0;
        if(s1[0]=='+'||s1[0]=='-')
        {
            start = 1;
            if(s1[0]=='-')
                flag = false;
        }
        for(int i = start;i<s1.length-1;i++ )
        {
            if(s1[i]<'0'||s1[i]>'9')
                return 0;
            sum = sum * 10 + (s1[i] - '0');
        }
        int dight = (int)(s1[s1.length-1]-'0');
        if(flag && sum*10>Integer.MAX_VALUE - dight)  //正数溢出判断
               return 0;
        if(!flag&& sum*10*(-1) < Integer.MIN_VALUE + dight)  //负数溢出判断
                return 0;
        sum = sum * 10 + dight;
        return flag ? sum : sum * -1;
    }
}
发布了58 篇原创文章 · 获赞 0 · 访问量 661

猜你喜欢

转载自blog.csdn.net/gaopan1999/article/details/104653186