JZ49:把字串轉換成整數
阿新 • • 發佈:2020-08-19
將一個字串轉換成一個整數,要求不能使用字串轉換整數的庫函式。 數值為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; }