您的位置:首页 > 其它

[LeetCode]String to Integer (atoi)

2015-06-18 19:35 267 查看
题意:字符串转正数

原题来自:https://leetcode.com/problems/string-to-integer-atoi/

分析:

《程序员面试宝典》上出现的面试题,主要是考虑到细节。

1. 字串为空或者全是空格,返回0;

2. 字串的前缀空格需要忽略掉;

3. 忽略掉前缀空格后,遇到的第一个字符,如果是‘+’或‘-’号,继续往后读;如果是数字,则开始处理数字;如果不是前面的2种,返回0;

4. 处理数字的过程中,如果之后的字符非数字,就停止转换,返回当前值;

5. 在上述处理过程中,如果转换出的值超出了int型的范围,就返回int的最大值或最小值。

class Solution {

public:

int myAtoi(string str) {
long long cur=0;//
int num=0,i=0;
int flag1=0,flag2=0;
while(str[i]!='\0' && str[i]==' ') i++;//开头空格舍弃
if(str[i]=='-') flag1++,i++;
else if(str[i]=='+') flag2++,i++;
for(; str[i]!='\0'; i++)
{
if(str[i]>='0' && str[i]<='9')
{
if(flag1==2)
{
cur=cur*10-(str[i]-'0');//这里是减法,因为cur符号是负号了
if(cur<-2147483648) return -2147483648;
}
else if(flag1==1) cur=-str[i]+'0',flag1++;//将负数的符号记录到cur里
else
{
cur=cur*10+(str[i]-'0');
if(cur>2147483647) return 2147483647;
}
}
else break;
}
num=(int)cur;
return num;
}
};


作者:orange1438
出处:http://www.cnblogs.com/orange1438/
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: