Leetcode8. 字符串转换整数 (简单模拟)

Posted !0 !

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Leetcode8. 字符串转换整数 (简单模拟)相关的知识,希望对你有一定的参考价值。

题目链接:https://leetcode-cn.com/problems/string-to-integer-atoi/

解题思路

看到了官方题解使用的自动机(我太菜了,还没学到自动机),我来讲一下我的做法,就是简单模拟。直接看代码。

代码

class Solution {
    public int myAtoi(String s) {
        long ans = 0;   //记录最终答案
        int k = 0;      //记录下标
        while(k < s.length() && s.charAt(k) == ' ') //去掉前导空格 
            k++;
        if(k == s.length()) //如果k已经到尾部直接返回0,排除字符串都是空格的情况
            return 0;
        int m = 1;  //符号位,默认为正
        if(s.charAt(k) == '-') { //如果符号位为负数
            m = -1;
            k++;
        }else if(s.charAt(k) == '+') {   //符号位为正数
            m = 1;
            k++;
        }
        while (k < s.length() && s.charAt(k) >= '0' && s.charAt(k) <= '9') {    //如果是数字则记录进答案
            ans = ans * 10 + s.charAt(k++) - '0';
            if(ans > Integer.MAX_VALUE || (m == -1 && -ans < Integer.MIN_VALUE))
                break;
        }
        ans = ans * m;  //加上符号位
        if(ans > Integer.MAX_VALUE) //大于最大数
            return Integer.MAX_VALUE;
        if(ans < Integer.MIN_VALUE) //小于最小数
            return Integer.MIN_VALUE;
        return (int)ans;    //返回
    }
}

复杂度分析

  • 时间复杂度:O(n)
  • 空间复杂度:O(1)

以上是关于Leetcode8. 字符串转换整数 (简单模拟)的主要内容,如果未能解决你的问题,请参考以下文章

每日算法/刷穿 LeetCode8. 字符串转换整数 (atoi) (中等)

leetcode-7 整数反转&&leetcode8 字符串转换整数

leetcode-7 整数反转&&leetcode8 字符串转换整数

leetcode-7 整数反转&&leetcode8 字符串转换整数

leetcode8 字符串转整数

前端与算法 leetcode 8. 字符串转换整数 (atoi)