牛客网刷题-将字符串转化为整数

问题描述

实现函数 atoi 。函数的功能为将字符串转化为整数
提示:仔细思考所有可能的输入情况。这个问题没有给出输入的限制,你需要自己考虑所有可能的情况。

输入描述:
输入一个字符串

输出描述:
输出字符串的整数

示例

示例1

输入
“123”

输出
123

解决思路

分析

  1. 通过遍历方式加和计算,注意需要处理正负号和字母的情况,以及数越界的情况。

方法

  1. 通过遍历方式加和计算,注意需要处理正负号和字母的情况,以及数越界的情况。

代码实现

// 思路1
public class Solution {
    
      
    public int atoi(String str) {
    
    
        // write code here
        if (str == null || str.trim().length() < 1)
            return 0;
        //处理掉前后空格
        char[] arr = str.trim().toCharArray();

        int sign = 1, index = 0;
        //判断正负号
        if (arr[0] == '+')
            index++;
        if (arr[0] == '-') {
    
    
            sign = -1;
            index++;
        }

        int num = 0;
        for (int i = index; i < arr.length; i++) {
    
    
            if (arr[i] - '0' >= 0 && arr[i] - '9' <= 0) {
    
    
                //如果当前运算会越界的时候,直接输出结果
                if (num > Integer.MAX_VALUE / 10 || num == Integer.MAX_VALUE / 10 && arr[i] - '7' > 0) {
    
    
                    if (sign > 0)
                        return Integer.MAX_VALUE;
                    else
                        return Integer.MIN_VALUE;
                }

                num = 10 * num + arr[i] - '0';
            } else
                //如果是字母,跳出循环
                break;
        }

        return num * sign;
    }
}

时间复杂度分析:
O(N):遍历数组

空间复杂度分析:
O(N):额外的char数组空间

小伙伴如果想测试的话,可以直接到牛客网这个链接做测试

将字符串转化为整数-牛客网

猜你喜欢

转载自blog.csdn.net/qq_35398517/article/details/113744253