1. 程式人生 > >劍指Offer字串轉換成整數

劍指Offer字串轉換成整數

題目描述

將一個字串轉換成一個整數(實現Integer.valueOf(string)的功能,但是string不符合數字要求時返回0),要求不能使用字串轉換整數的庫函式。 數值為0或者字串不是一個合法的數值則返回0。

思路

注意合法性判別即可

AC程式碼

class Solution {
  public:
    int StrToInt(string str) {
        if(str.empty()) {
            return 0;
        } else if((str[0] < '0' || str[0] > '9') && str[0] != '+' && str[0] != '-') {  // 第一個不是合法的符號
            return 0;
        } else if((str[0] == '+' || str[0] == '-') && str.length() == 1) {  // 僅僅輸入符號的情況
            return 0;
        } else if(str[0] > '0' && str[0] < '9') {  // 無符號
            for(int i = 0; i < str.length(); ++i) {  // 合法性判別
                if(str[i] < '0' || str[i] > '9') {
                    return 0;
                }
            }
        }
        int res = 0;
        int n = 1;
        bool tag = false;
        for(int i = str.length() - 1; i >= 0; --i) {
            if(str[i] == '-') {
                tag = true;
                break;
            } else if(str[i] == '+') {
                break;
            }
            res += (str[i] - '0') * n;
            n *= 10;
        }
        if(tag)
            res = -res;
        return res;
    }
};