LeetCode 8 String to Integer (atoi)

来源:互联网 发布:windows无法启动怎么办 编辑:程序博客网 时间:2024/04/30 15:07

题目大意:

对于传入的字符串,将其转换成为对应的整数值,注意有非数字输入时将第一个非数字输入往后的所有输入无视

注意处理开头的空格,无视掉这些空格

然后就是开头可能有正负号


大致思路:

知道了在非法字符之后的串是无视掉的之后不是很难

做这个题顺便回忆了一下long long强制类型转换成为int的时候的过程

由于是强制截断取了long long的后半段的位来当作int,当long long型的某个值不超过int的时候,强制截断得到的数刚好是相同的,但是当这个值超过int范围时,强制转换得到的值是long long表示下后32位截断的值(补码表示)


代码如下:

Result  :  Accepted     Time  :  8 ms

class Solution {public:    int myAtoi(string str) {        if(str.empty()) return 0;        bool positive = true;        int sz = str.size();        int now = 0;        while(now < sz && str[now] == ' ') now++;        if(str[now] == '-') positive = false, now++;        else if(str[now] == '+') now++;        long long ans = 0;        if(positive){            while(now < sz && str[now] <= '9' && str[now] >= '0'){                ans = ans*10 + str[now] - '0';                if(ans >= 0x000000007fffffff) ans = 0x000000007fffffff;                now++;            }            return (int)ans;        }else{            while(now < sz && str[now] <= '9' && str[now] >= '0'){                ans = ans*10 + str[now] - '0';                if(ans >= 0x0000000080000000) ans = 0x0000000080000000;                now++;            }            return (int)-ans;        }    }};


0 0
原创粉丝点击