您的位置:首页 > 其它

String to Integer (atoi)

2015-06-13 10:10 260 查看
Implement atoi to convert a string to an integer.

各种意外情况考虑进去是这道题唯一的难点,当然也可以逐步完善,主要需要考虑的是:

1 . 转换数字是否超过int类型范围INT_MAX (2147483647) or INT_MIN (-2147483648) ;我在程序中的判定方法是if(2147483647/10-a<0|| 2147483647-a*10’ <’add ) 在这没关注正负.

2.如果错误输入时的情况,在Leetcode中如果遇见错误输入就返回错误输入前的已得到的结果.

在这道题想了半天~当时还把浮点数输入考虑进去了,结果发现不需要哎.

代码如下:

int myAtoi(char* str) {
int a =0;
int add ;
int mark =1;
char *ptr =str;
for(;*ptr==' ';ptr++)
;
switch(*ptr)
{
case '+':
mark=1;
ptr++;
break;
case '-':
mark=-1;
ptr++;
}
for( ; *ptr!='\0';ptr++ )
{       switch(*ptr)
{       case'+':
return(a*mark);
case '-':
return(a*mark);
break;
case 'e':
return(a*mark);
break;
case '0':case '1':case '2':case '3':case '4':case '5':case '6':case '7':case '8':case '9':

add = (*ptr -'0');
if(2147483647/10-a<0|| 2147483647-a*10 <add  )
if(mark >0)
return(2147483647 );
else
return (-2147483648);
a =a*10+add;
break;
default:
return(mark*a);
}
}
return(mark*a);
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: