LeetCoder 8. String to Integer (atoi)

来源:互联网 发布:linux svn 创建仓库 编辑:程序博客网 时间:2024/06/09 20:04

题意

将一个字符串转换为数字

思路

注意情况即可:

  • 前面有空格
  • 具有多个正负号
  • 具有前导零
  • 具有其他字符(例如英文字母等)
  • 字符串组成的数字可能会溢出,即超出int

结果

Your runtime beats 58.71 % of cpp submissions.

代码

class Solution {public:    int myAtoi(string str) {        int len = str.length();        string s = "";        int flag = 0;        int bz = 0;        int loc = 0;        while(str[loc] == ' ') loc++;        for(int i = loc; i < len;i++){            if(str[i] == '-'){                if(bz) return 0;                bz = -1;                continue;            } else if(str[i] == '+'){                if(bz) return 0;                bz = 1;                flag = 1;                continue;            } else if(str[i] == '0' && flag == 0){                continue;            }            flag = 1;            s += str[i];        }        if(bz == 0) bz = 1;        long long ans = 0;        int sLen = s.length();        for(int i = 0; i < sLen;i++){            if(s[i] >= '0' && s[i] <= '9'){                ans = ans * 10 + s[i] - '0';                if(ans * bz > INT_MAX)                    return INT_MAX;                if(ans * bz < INT_MIN)                    return INT_MIN;            } else{                break;            }        }        return ans * bz;    }};
0 0
原创粉丝点击