资讯专栏INFORMATION COLUMN

[Leetcode] String to Integer (atoi) 字符串转整数

Astrian / 1382人阅读

摘要:通用方法复杂度时间空间思路字符串题一般考查的都是边界条件特殊情况的处理。所以遇到此题一定要问清楚各种条件下的输入输出应该是什么样的。

String to Integer (atoi)
  

Implement atoi to convert a string to an integer.

Hint: Carefully consider all possible input cases. If you want a challenge, please do not see below and ask yourself what are the possible input cases.

Notes: It is intended for this problem to be specified vaguely (ie, no given input specs). You are responsible to gather all the input requirements up front.

通用方法 复杂度

时间 O(n) 空间 O(1)

思路

字符串题一般考查的都是边界条件、特殊情况的处理。所以遇到此题一定要问清楚各种条件下的输入输出应该是什么样的。这里已知的特殊情况有:

能够排除首部的空格,从第一个非空字符开始计算

允许数字以正负号(+-)开头

遇到非法字符便停止转换,返回当前已经转换的值,如果开头就是非法字符则返回0

在转换结果溢出时返回特定值,这里是最大/最小整数

注意

检查溢出时最大整数要先减去即将加的最末位再除以10,来处理"2147483648"类似的情况

可以参考glibc中stdlib/atoi.c的实现方法

代码
javapublic class Solution {
    public int myAtoi(String str) {
        str = str.trim();
        int result = 0;
        boolean isPos = true;
        for(int i = 0; i < str.length(); i++){
            char c = str.charAt(i);
            if(i==0 && (c=="-"||c=="+")){
                isPos = c=="+"?true:false;
            } else if (c>="0" && c<="9"){
                // 检查溢出情况
                if(result>(Integer.MAX_VALUE - (c - "0"))/10){
                    return isPos? Integer.MAX_VALUE : Integer.MIN_VALUE;
                }
                result *= 10;
                result += c - "0";
            } else {
                return isPos?result:-result;
            }
        }
        return isPos?result:-result;
    }
}

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/64387.html

相关文章

  • Leetcode 8 String to Integer (atoi)

    摘要:难度是标准库中的一个函数可以将字符串表示的整数转换为现在要求我们自己来实现它解题过程中主要有以下两点需要注意字符串开头可能出现或者需要处理使用来记录中间结果防止溢出下面是的解法 Implement atoi to convert a string to an integer. Hint: Carefully consider all possible input cases. If ...

    cod7ce 评论0 收藏0
  • July 算法习题 - 符串2 + Leetcode 8,9

    摘要:判断一条单向链表是不是回文解法可以借助栈,将遍历到的前半段链表节点放入栈,后半段每当遍历到一个,都要与出栈的节点相比较。如果中间出现不相等的情况,则不是回文。 [July 程序员编程艺术:面试和算法心得题目及习题][1] 字符串转换成整数 also Leetcode 8 String to Integer (atoi) 题目描述 输入一个由数字组成的字符串,把它转换成整...

    timger 评论0 收藏0
  • 实现atoi函数(stringinteger)

    摘要:实现函数转思路利用内置的函数可以将字符串快速转换成型利用是否抛出异常来快速判断能否被转换成,进而迅速确定输入字符串中第一个非数字字符的位置需要注意处理符号的问题代码如果是或者但是会抛出异常,此时返回由于的没有取值上限,如果规定为 实现atoi函数(string转integer) String to Integer (atoi) Implement atoi to convert a ...

    leanote 评论0 收藏0
  • LeetCode 之 JavaScript 解答第8题 —— 符串整数String to

    摘要:当我们寻找到的第一个非空字符为正或者负号时,则将该符号与之后面尽可能多的连续数字组合起来,作为该整数的正负号假如第一个非空字符是数字,则直接将其与之后连续的数字字符组合起来,形成整数。数字前正负号要保留。 Time:2019/4/19Title: String To IntegerDifficulty: MediumAuthor: 小鹿 题目:String To Integer(字...

    zhisheng 评论0 收藏0
  • #yyds干货盘点#“愚公移山”的方法解atoi,自以为巧妙!

    摘要:若函数不能执行有效的转换,返回。如果数值超过可表示的范围,则返回或。示例输入输出解释转换截止于数字,因为它的下一个字符不为数字。 这是我参与11月更文挑战的第12天。一、写在前面LeetCode 第一题两数之和传输门:听说你还在写双层for循环解两数之和?LeetCode 第二题两数之和传输门:两个排序数组的中...

    番茄西红柿 评论0 收藏2637

发表评论

0条评论

最新活动
阅读需要支付1元查看
<