标签:
将一个含数字的字符串转换成int型
实现并不困难,主要考虑各种情况。
1.字符串是不是空字符串;
2.字符串带空格或其他字符怎么办;
3.带正负号的处理;
4.字符串中的数超过int型的范围怎么办(int 范围:-2147483648~2147483647 0x80000000~0x7fffffff)
1 int myAtoi(char* str) { 2 int len=strlen(str); 3 int flag=1,i=0; 4 long long ans=0; 5 if(len==0) 6 return 0; 7 else if(len==1) 8 { 9 if(str[0]>=‘0‘ && str[0]<=‘9‘) 10 return str[0]-‘0‘; 11 else return 0; 12 } 13 else 14 { 15 int i=0; 16 while(str[i]==‘ ‘) i++; //前面的空字符串跳过 17 if(str[i]==‘-‘) {flag=-1;i++;} 18 else if(str[i]==‘+‘) {flag=1;i++;} 19 else if(str[i]>=‘0‘ && str[i]<=‘9‘) {flag=1;} 20 while(str[i]!=‘\0‘) 21 { 22 if(str[i]>=‘0‘ && str[i]<=‘9‘) 23 { 24 ans=ans*10+str[i]-‘0‘;i++; 25 if(flag*ans>INT_MAX) { return INT_MAX;break;} 26 else if(flag*ans<=INT_MIN){return INT_MIN;break;} 27 } 28 else{return ans*flag;break;} //如果遇到非数字的字符串,后面的停止扫描 29 30 } 31 return (int)(ans)*flag; 32 } 33 }
leetCode.008 String to Integer (atoi)
标签:
原文地址:http://www.cnblogs.com/madking/p/4658529.html