码迷,mamicode.com
首页 > 其他好文 > 详细

8. String to Integer (atoi)

时间:2016-08-09 02:08:35      阅读:121      评论:0      收藏:0      [点我收藏+]

标签:

 1 class Solution {
 2 public:
 3     int myAtoi(string str) {
 4         if (str.size() == 0) return 0;
 5         int index = 0;
 6         // 忽略前导空白
 7         while (str.size() > index && str[index] ==  ) ++ index;
 8         int flag = 1; // 可能的符号位
 9         if (str.size() > index && str[index] == -) {
10             ++ index; flag = -1;
11         }
12         else if (str.size() > index && str[index] == +) ++ index;
13         int sum = 0; // 返回值
14         bool overflow = false; // 是否溢出
15         while (str.size() > index && str[index] >= 0 && str[index] <= 9) {
16             int prev = sum;
17             sum = sum * 10 + str[index] - 0; ++ index;
18             // 乘法越界或者加法导致越界,同时注意越界不一定会导致符号的变化,比如乘法越界
19             if (sum / 10 != prev || sum < 0) { overflow = true; break; } 
20         }
21         if (flag == 1 && overflow) return INT_MAX; // 
22         if (flag == -1 && overflow) return INT_MIN; // 
23         return flag * sum;
24     }
25 };

 

8. String to Integer (atoi)

标签:

原文地址:http://www.cnblogs.com/shadowwalker9/p/5751572.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!