题目描述
请你写一个函数 StrToInt,实现把字符串转换成整数这个功能。
你的函数应满足下列条件:
1.忽略所有行首空格,找到第一个非空格字符,可以是 ‘+/−’表示是正数或者负数,紧随其后找到最长的一串连续数字,将其解析成一个整数;
2.整数后可能有任意非数字字符,请将其忽略;
3.如果整数长度为 0,则返回 0;
4.如果整数大于 INT_MAX(2^31−1),请返回 INT_MAX;如果整数小于INT_MIN(−2^31) ,请返回 INT_MIN;
样例
注意:使用位运算计算2的幂,要记住先2ll,再位运算
class Solution {
public:
long long numTwo=2ll<<30;
int check(long long n){
if(n>(numTwo-1))return 1;
return 0;
}
int strToInt(string str) {
if(!str.size())return 0;
long long ans=0;
bool st=false,stn=false;
for(int i=0;i<str.size();i++){
if(str[i]<'0'||str[i]>'9'){
if(str[i]!=' '&&str[i]!='-'&&str[i]!='+'&&!stn)return 0;
if(stn)return ans;
}
if(str[i]>='0'&&str[i]<='9'){
stn=true;
ans=ans*10+(int)(str[i]-'0');
}
if(str[i]=='-')st=true;
if(check(ans)&&st)return -numTwo;
if(check(ans))return numTwo-1;
}
if(st)ans*=-1;
return ans;
}
};