分为两点进行分析:
(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; } };