1. 程式人生 > 實用技巧 >JZ49:把字串轉換成整數

JZ49:把字串轉換成整數

將一個字串轉換成一個整數,要求不能使用字串轉換整數的庫函式。 數值為0或者字串不是一個合法的數值則返回0

解題思路

  • 簡單判斷
  • 字串中包含字元、數字、空格。首先應該去掉前導、後導空格。

上程式碼(C++香)

int StrToInt(string str) {
    int length = str.length();
    if(length <= 0)
        return 0;
    long long ans = 0;
    int flag = 1;

    // 首先應該排除空格(允許前面後面有空格)
    int m = 0;
    while (m < length && str[m] == ' ')
        ++m;
    int k = length - 1;
    while (k >= 0 && str[k] == ' ')
        --k;
    for(int i = m; i <= k; i++){
        if(!(str[i] >= '0' && str[i] <= '9')){
            if(i == m && str[i] == '+')
                flag = 1;
            else if(i == m && str[i] == '-')
                flag = -1;
            else
                return 0;
            continue;
        }
        // 此處應該加一個判斷數值是否越界int
        ans = ans * 10 + (str[i] - '0');
        //cout<<"ans = "<<ans<<endl;
    }
    return flag * ans;

}