String to Integer (atoi)
来源:互联网 发布:靠谱助手软件 编辑:程序博客网 时间:2024/04/19 04:41
如果用long long来保存scan过程中的中间结果,代码如下:
class Solution {public: int atoi(const char *str) { long long sum = 0; int sign = 1; const int len = strlen(str); int idx = 0; while(str[idx] == ' ') idx++; //略过前面的连续空格 if(str[idx] == '+') { sign = 1; idx++; } else if(str[idx] == '-') { sign = -1; idx++; } for(; idx<len; idx++) { int digit = str[idx]-'0'; if(digit >= 0 && digit <= 9) sum = (sum*10 + digit); else break; } if(sum > INT_MAX) //处理溢出情况 return (sign==1)? INT_MAX: INT_MIN; return sum*sign; }};
如果不允许用long long,则可以用一下方式处理溢出:
for(; idx<len; idx++) { int digit = str[idx]-'0'; if(digit >= 0 && digit <= 9) { if(sum > INT_MAX/10 || sum == INT_MAX/10 && digit > INT_MAX%10) //处理溢出情况 return (sign==1)? INT_MAX: INT_MIN; sum = (sum*10 + digit); } else break; } /* if(sum > INT_MAX) //处理溢出情况 return (sign==1)? INT_MAX: INT_MIN; */
8.30最新代码:
class Solution {public: int atoi(const char *str) { bool positive = true; int value = 0; int cur = 0; while(str[cur] == ' ') cur++; if(str[cur] == '-') { positive = false; cur++; } else if(str[cur] == '+') { positive = true; cur++; } else if(str[cur] >= '0' && str[cur] <= '9') { positive = true; } else return 0; while(str[cur] >= '0' && str[cur] <= '9') { if(INT_MAX/10 < value || (INT_MAX/10==value && INT_MAX%10 < (str[cur]-'0'))) { return positive?INT_MAX:INT_MIN; } value = value*10 + (str[cur]-'0'); cur++; } return positive?value:(0-value); }};
0 0
- String to Integer (atoi)
- String to Integer (atoi)
- String to Integer (atoi)
- String to Integer (atoi)
- String to Integer (atoi)
- String to Integer (atoi)
- String to Integer (atoi)
- String to Integer (atoi)
- string to integer (atoi)
- String to Integer (atoi)
- String to Integer (atoi)
- String to Integer (atoi)
- String to Integer (atoi)
- String to Integer(atoi)
- String to Integer (atoi)
- String to Integer (atoi)
- String to Integer (atoi)
- String to Integer (atoi)
- Ubuntu中查看各种设备和资源的命名汇总
- 完成端口(CompletionPort)详解 - 手把手教你玩转网络编程系列之三
- 第六周:图书馆管理系统
- SDUTOJ 2119 数据结构实验之链表四:有序链表的归并
- POST方式跨域上传文件
- String to Integer (atoi)
- 高级游戏资源打包技术详解
- 手把手教你玩转SOCKET模型之重叠I/O篇(上)
- 1、寻找数组中的最大值和最小值
- SQL Update多表联合更新的方法 .
- 一起学Maven(Maven仓库管理器之初识Nexus)<五>
- pat 1019
- JAVA
- ubuntu中vi不能正常使用方向键问题