您的位置:首页 > 其它

leetCode 之 String to Interger

2015-06-03 21:10 323 查看
LeetCode 之 String to Interger

这一道题比较简单,需要注意的事项如下:

1、字符串前面的空格需要去掉;

2、数字前面的正负号需要标识出来;

3、形如 :” -123ac“, 取前面的数字:-123;

4、形如: ” - ab123”, 为错误形式,数字之前只能出现若干个空格,以及一个相连的正负号;

5、需要考虑到输入超出了Int可表示的有效范围(溢出)时,输出为相应最大值(正数),或者最小值(负数)

代码如下:

int myAtoi(char *str)
{
int i;
long long int strToInt = 0; //!< long long  int足够大,保存输入的值
char symbol = 0;

//!< 若str为空,则返回
if (str == NULL)
{
printf("The pointer is NULL\n");
return 0;
}

//!< 去除前面的空格
i = 0;
while (str[i] == ' ')
++i;
//!< 保存正负号
if ( (str[i] == '-') || (str[i] == '+') )
{
symbol = str[i];
++i;
}
//!< 若字符串除空格和一个正负号之外的第一个字符不是数字,则报错
while (str[i] <  '0' || str[i] > '9')
{
printf("It's not number\n");
return 0;
}
//!< 读取数字,并判断是否溢出int类型的有效范围
while (str[i] >= '0' && str[i] <= '9')
{
strToInt = 10*strToInt + str[i] - '0';
if (strToInt >= 2147483648)
{
if (symbol == '-')
{
return -2147483648;
}
else
{
return 2147483647;
}
}
++i;
}

return strToInt = symbol == '-' ? -strToInt: strToInt;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: