剑指offer最优解Java版-把字符串转换成整数

题目描述

将一个字符串转换成一个整数(实现Integer.valueOf(string)的功能,但是string不符合数字要求时返回0),要求不能使用字符串转换整数的库函数。 数值为0或者字符串不是一个合法的数值则返回0。

解决方法

重点考察边界条件:

  1. 数据上下溢出
  2. 空字符串
  3. 只有正负号
  4. 有无正负号
  5. 错误字符串的输出
public class Solution
{
    public static int StrToInt(String str)
    {
        if (str.equals("") || str.length() == 0)
            return 0;
        char[] a = str.toCharArray();
        int negative = 0;
        if (a[0] == '-')
            negative = 1;
        long sum = 0;
        for (int i = negative; i < a.length; i++)
        {
            if (a[i] == '+')
                continue;
            if (a[i] < 48 || a[i] > 57)
                return 0;
            sum = sum * 10 + a[i] - 48;
            if((negative==0 && sum>Integer.MAX_VALUE) || (negative==1&&(sum*negative<Integer.MIN_VALUE))){
                return 0;
            }
        }
        return negative == 0 ? (int)sum : (int)sum * -1;
    }

    public static void main(String[] args) {
        System.out.println(StrToInt("-2147483648"));
    }
}

复杂度分析:

  • 时间复杂度:O(n)。
  • 空间复杂度:O(n)。
哎呀,如果我的名片丢了。微信搜索“全菜工程师小辉”,依然可以找到我
全部评论

相关推荐

点赞 评论 收藏
分享
03-17 19:21
门头沟学院 Java
面试官_我太想进步了:正常企查查显示的员工一般比设计的少
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务