1. 程式人生 > >leetcode8——字串轉整數

leetcode8——字串轉整數

分三種情況討論: 1. 判斷是否為空:輸入為空時,輸出0,並標記是因為非法輸入導致的 2. 錯誤輸入:如果字串的前部分字元為空,此時忽略前面為空的部分,即從有正常字元的位置開始計算,如輸入字串為“ 42”,則輸出為42; 3. 特殊輸入:第一個有效字元是否為‘+’或‘-’,則先判斷最後輸出的整數位正還是負數 4. 考慮溢位等情況,如INT_MIN, INT_MAX;

class Solution {
public:
    int myAtoi(string str) {
        const long long max = 0x100000000;
        long long num = 0
; bool flag = false;//標記是否為負數 bool Invalid = false;//標記是否非法輸入 if(str.length() == 0){ Invalid = true; return 0; } const char* digit = str.c_str(); while(*digit == ' '){//過濾點前面的空字元 digit ++; } if(*digit != '\0' && *digit == '+'
){//判斷第一個有效字元是否為‘+’ digit ++; }else if(*digit != '\0' && *digit == '-'){//判斷第一個有效字元是否為‘-’ flag = true;//標記為true表示該整數位負數 digit ++; } while(*digit != '\0'){ if(*digit <= '9' && *digit >= '0'){ num = num * 10
+ *digit - '0'; digit ++; if(num > INT_MAX){ num = max; } }else{ break; } } if(flag){ num = -num; } if(num > INT_MAX) num = INT_MAX; if(num < INT_MIN) num = INT_MIN; return num; } };