[Leetcode]-String to Integer (atoi)
来源:互联网 发布:古城户外淘宝 编辑:程序博客网 时间:2024/06/16 19:41
mplement atoi to convert a string to an integer.
Hint: Carefully consider all possible input cases. If you want a challenge, please do not see below and ask yourself what are the possible input cases.
Notes: It is intended for this problem to be specified vaguely (ie, no given input specs). You are responsible to gather all the input requirements up front.
Update (2015-02-10):
The signature of the C++ function had been updated. If you still see your function signature accepts a const char * argument, please click the reload button to reset your code definition.
题目:字串转整数
注意:细节部分非常多,需要考虑很多情况
1、int溢出判断
2、正负号,具体情况见main函数中
3、含有空格的情况
结果:4ms
#include <stdlib.h>#include <stdio.h>#include <math.h>#include <limits.h>int myAtoi(char* str) { //"NULL" "000234" "+23" "-34" "+-34" " 010" if(NULL == str ) return 0; int sum = 0.0; int f = 0; int DIV = INT_MAX/10; while('\0' != *str) { if(*str == '+') { str++; if(*str < '0' || *str > '9') return 0; else f = 0; } if(*str == '-') { str++; if(*str < '0' || *str > '9') return 0; else f = 1; } if(*str >= '0' && *str<= '9' ) { if(sum > DIV && f == 0) return INT_MAX; if(sum > DIV && f == 1) return -INT_MAX-1; sum = sum * 10.0; if(INT_MAX - *str + '0' < sum && f == 0) return INT_MAX; if((INT_MAX - (*str - '0') < sum ) && (f == 1)) return -INT_MAX-1; sum = sum + *str - '0'; str++; if(*str == '\0') break; else if(*str < '0' || *str > '9') break; } else { if(*str >= 'a' && *str <= 'z' ) break; str++; } } if(f) sum = -sum; return sum;}int main(){ char *str = "0034"; int r = myAtoi(str); printf("myAtoi str0 is : %d\n",r); char *str1 = "00"; int r1 = myAtoi(str1); printf("myAtoi str1 is : %d\n",r1); char *str2 = "+23"; int r2 = myAtoi(str2); printf("myAtoi str2 is : %d\n",r2); char *str3 = "-2345"; int r3 = myAtoi(str3); printf("myAtoi str3 is : %d\n",r3); char *str4 = "+-23"; int r4 = myAtoi(str4); printf("myAtoi str4 is : %d\n",r4);// expected 0 char *str5 = " 010"; int r5 = myAtoi(str5); printf("myAtoi str5 is : %d\n",r5); char *str6 = " +0104"; int r6 = myAtoi(str6); printf("myAtoi str6 is : %d\n",r6); char *str7 = " -0187"; int r7 = myAtoi(str7); printf("myAtoi str7 is : %d\n",r7);// expected -187 char *str8 = " -018a567"; int r8 = myAtoi(str8); printf("myAtoi str8 is : %d\n",r8); // expected -18 char *str9 = "2147483648"; int r9 = myAtoi(str9); printf("myAtoi str9 is : %d\n",r9); // expected 2147483647 由于越界,只取最大 char *str10 = "-2147483649"; int r10 = myAtoi(str10); printf("myAtoi str10 is : %d\n",r10); // expected -2147483648 char *str11 = "- 204"; int r11 = myAtoi(str11); printf("myAtoi str11 is : %d\n",r11); // expected 0 char *str12 = "b3424242"; int r12 = myAtoi(str12); printf("myAtoi str12 is : %d\n",r12); // expected 0 while(0);}
1 0
- LeetCode:String to Integer (atoi)
- LeetCode: String to Integer (atoi)
- LeetCode String to Integer(atoi)
- LeetCode :String to Integer (atoi)
- Leetcode: String to Integer (atoi)
- Leetcode : String to Integer (atoi)
- 【leetcode】String to Integer (atoi)
- [LeetCode]String to Integer (atoi)
- LeetCode-String to Integer (atoi)
- [leetcode] String to Integer (atoi)
- LeetCode - String to Integer (atoi)
- 【leetcode】String to Integer (atoi)
- LeetCode - String to Integer (atoi)
- LeetCode: String to Integer (atoi)
- Leetcode: String to Integer (atoi)
- [LeetCode] String to Integer (atoi)
- leetcode String to Integer (atoi)
- [LeetCode]String to Integer (atoi)
- Chrome开发者工具之结构与样式
- mysql备份出错 mysqldump: Got error: 2002..
- BI并非万能,中层业务管理报表要另辟蹊径
- Android 的sp 和 wp 类模板 以及RefBase类
- 中国十大虚拟主机服务商
- [Leetcode]-String to Integer (atoi)
- java缓存技术
- IOS-获取Model(设备型号)、Version(设备版本号)、app(程序版本号)
- VS2010编译时 mt.exe出错解决办法
- 只对某个特定的SQL语句开启10046 trace
- MSMQ简介
- Android ListViewitem滑动出现删除按钮
- XGBoost:二分类问题
- mongodb常用操作