string-to-integer

Implement atoi which converts a string to an integer.

  1. 问题
    英文详细描述见链接:string-to-integer
    主要题意要求如下:

    • 将字符串转换为对应的整数
    • 忽略字符串开头的空白字符,字符串中数字后面可能存在的其他字符不影响函数返回该数字
    • 整数的正负号是可能出现的,数的范围为32位的有符号整数,超出该范围的返回INT_MAX(2^31 − 1) 或者 INT_MIN (−2^31)
    • 若字符串最开始的可视字符非有效字符,则返回0
  2. code

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    class Solution {
    public:
    int myAtoi(string str) {
    if (str.empty()) return 0;
    int i = 0, sign = 1;
    while(i < str.size() && isspace(str[i])) i++;
    long base = 0; // 此处使用long,防止数字大于int32导致的溢出
    if (i < str.size() && (str[i] == '-' || str[i] == '+'))
    sign = str[i++]=='-'? -1 : 1;
    while (i < str.size() && isdigit(str[i])) {
    base = base * 10 + str[i++] - '0';
    if (base > INT_MAX) return sign == -1 ? INT_MIN : INT_MAX;
    }
    return sign * base;
    }
    };