leetCode 之 String to Interger
2015-06-03 21:10
323 查看
LeetCode 之 String to Interger
这一道题比较简单,需要注意的事项如下:
1、字符串前面的空格需要去掉;
2、数字前面的正负号需要标识出来;
3、形如 :” -123ac“, 取前面的数字:-123;
4、形如: ” - ab123”, 为错误形式,数字之前只能出现若干个空格,以及一个相连的正负号;
5、需要考虑到输入超出了Int可表示的有效范围(溢出)时,输出为相应最大值(正数),或者最小值(负数)
代码如下:
这一道题比较简单,需要注意的事项如下:
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; }
相关文章推荐
- js实时计算字数提醒的文本框
- 一 右键功能
- 海马汽车经销商管理系统技术解析(十五)新增入库
- LightOJ1005---Rooks(简单组合数学)
- 如何一步一步从 QA 到 EP
- “吃神么,买神么”的第二个Sprint计划
- android_NFC
- 使用Python操作Redis
- java取Cookies得值
- sgu250:Constructive Plan(单调性乱搞)
- WCF基础
- 黑马程序员_正则表达式
- JavaSE_ 网络编程 目录(26)
- HDU 1668 Islands and Bridges
- Servlet动态页面技术
- centos 配置php-fpm和nginx的通信
- 登陆phpMyAdmin不需要密码
- STM32将12M晶振换8M晶振后Keil及程序的相关设置
- 终于不再是hello world
- C++STL中vector容器的用法