題目描述
將一個(gè)字符串轉(zhuǎn)換成一個(gè)整數(shù)(實(shí)現(xiàn)Integer.valueOf(string)的功能,但是string不符合數(shù)字要求時(shí)返回0)届搁,要求不能使用字符串轉(zhuǎn)換整數(shù)的庫函數(shù)。 數(shù)值為0或者字符串不是一個(gè)合法的數(shù)值則返回0窍育。
輸入描述:
輸入一個(gè)字符串,包括數(shù)字字母符號(hào),可以為空
輸出描述:
如果是合法的數(shù)值表達(dá)則返回該數(shù)字卡睦,否則返回0
示例1
輸入
+2147483647
1a33
輸出
2147483647
0
class Solution {
public:
int StrToInt(string str) {
int n = str.size(),s = 1;
long long res = 0;
if (!n) return 0;
if(str[0] == '-') s = -1;
for(int i = (str[0] == '-' || str[0] == '+') ? 1 : 0; i < n; ++i){
//if(!(str[i]>='0' && str[i]<='9')) return 0;
//res = (res<<1)+(res<<3)+(str[i] & 0xf);
if(!('0' <= str[i] && str[i] <= '9')) return 0;
res = (res << 1) + (res << 3) + (str[i] & 0xf);
}
return res * s;
}
};