分为两点进行分析:
(1)首字符:+ - 1-9 其他
为区别+ - ,设置一个标志位flag,为正时为1,负为0
为1-9则
ret=ret*10+(str[0]-'0');
其他则返回0
(2)除首字符外
为0~9
ret=ret*10+(str[i]-'0');
其他则返回0
class Solution {
public:
int StrToInt(string str) {
int n=str.size();
bool flag=1;
long long ret=0;
for(int i=0;i<n;i++){
if(i==0){
if(str[0]=='-'&&n>1)
flag=0;
else if(str[0]=='+'&&n>1)
flag=1;
else if('1'<=str[0]&&str[0]<='9')
ret=ret*10+(str[0]-'0');
else
return 0;
}
if(i>0){
if('0'<=str[i]&&str[i]<='9')
ret=ret*10+(str[i]-'0');
else
return 0;
}
}
if(flag==1)
return ret;
else
return -ret;
}
};


京公网安备 11010502036488号