首页 > 代码库 > 【LeetCode】8. String to Integer (atoi)
【LeetCode】8. String to Integer (atoi)
Implement atoi to convert a string to an integer.
Hint: Carefully consider all possible input cases. If you want a challenge, please do not see below and ask yourself what are the possible input cases.
Notes: It is intended for this problem to be specified vaguely (ie, no given input specs). You are responsible to gather all the input requirements up front.
Update (2015-02-10):
The signature of the C++
function had been updated. If you still see your function signature accepts a const char *
argument, please click the reload button to reset your code definition.
题意:把符合条件的字符串变为数字
难点:这个题不难,难在要考虑转换条件
1.连续的数字字符
2.连续的数字字符前面不能用‘+‘,’-’,之外的字符,而且加减号要和数字相接
3.连续的数字字符后面可以有字幕(不知道为什么这个可以)
4.考虑溢出
1 int myAtoi(char* str) { 2 int len,i; 3 len=strlen(str); 4 long tmp=0; 5 int flag=0; 6 for(i=0;i<len;i++) 7 { 8 while(str[i]==‘ ‘) 9 i++; 10 if(str[i]==‘+‘) 11 { 12 flag=1; 13 i++; 14 } 15 else if(str[i]==‘-‘) 16 { 17 flag=-1; 18 i++; 19 } 20 if(flag&&!(str[i]<=‘9‘&&str[i]>=‘0‘)) 21 return 0; 22 while(i<len&&(str[i]<=‘9‘&&str[i]>=‘0‘)) 23 { 24 if(tmp<0) 25 tmp=tmp*10-(str[i]-‘0‘); 26 else 27 tmp=tmp*10+(str[i]-‘0‘); 28 if(-1==flag) 29 { 30 tmp*=-1; 31 if(tmp<0) 32 flag=1; 33 } 34 if(tmp>INT_MAX) 35 return 2147483647; 36 else if(tmp<INT_MIN) 37 return -2147483648; 38 i++; 39 } 40 while(i<len) 41 i++; 42 } 43 return tmp; 44 }
【LeetCode】8. String to Integer (atoi)