字符串转换为整数
来源:互联网 发布:软件外包网站 编辑:程序博客网 时间:2024/05/21 18:49
题目
转换字符串到整数
实现atoi这个函数,将一个字符串转换为整数。如果没有合法的整数,返回0。如果整数超出了32位整数的范围,返回INT_MAX(2147483647)如果是正整数,或者INT_MIN(-2147483648)如果是负整数。
样例
"10" =>10
"-1" => -1
"123123123123123" => 2147483647
"1.0" => 1
分析
该题目在LintCode上属于困难级别。主要是必须考虑全面,特别是要注意删除源串头尾无效字符以及判断合法性。
源码
/* 54 转换字符串到整数实现atoi这个函数,将一个字符串转换为整数。如果没有合法的整数,返回0。如果整数超出了32位整数的范围,返回INT_MAX(2147483647)如果是正整数,或者INT_MIN(-2147483648)如果是负整数。样例"10" =>10"-1" => -1"123123123123123" => 2147483647"1.0" => 1*/class Solution {public:/*** @param str: A string* @return An integer*/int atoi(string str) {// write your code hereif (str.empty()){return 0;}//ifint len = str.length();/*删除字符串开头多余的0*/int beg = 0;while (beg < len && (str[beg] == ' ' || str[beg] == '0')){++beg;}//while/*删除字符串结尾多余的非数字字符*/int end = beg + 1;while (end < len && (str[end] >= '0' && str[end] <= '9')){++end;}//while/*得到有效字符串*/str = str.substr(beg, end - beg);if (!isValid(str)){return 0;}//iflen = str.length();bool posi = str[0] == '-' ? false : true;int minq = INT_MIN / 10, minr = INT_MIN % 10;int sum = 0;for (int i = (!posi || str[0] == '+') ? 1 : 0; i<len; ++i){if (str[i] == '.'){break;}//ifint num = '0' - str[i];if ((sum < minq) || (sum == minq && num < minr)){/*溢出*/return posi ? INT_MAX : INT_MIN;}//ifsum = sum * 10 + num;}//for/*溢出*/if (posi && sum == INT_MIN){return INT_MAX;}//ifreturn posi ? -sum : sum;}bool isValid(string str){if (str.empty()){return true;}//ifint len = str.length();if ((str[0] != '-' && str[0] != '+') && (str[0] < '0' || str[0] > '9')){return false;}//ifif ((str[0] == '-' || str[0] == '+') && (len == 1 || str[0] == '0' || str[0] == '.')){return false;}//ifif (str[0] == '0' && len > 1){return false;}//iffor (int i = 1; i<len; ++i){if ((str[i] < '0' || str[i] > '9') && (str[i] != '.')){return false;}//ifif (str[i] == '.' && (i + 1) == len){return false;}//elif}//forreturn true;}};GitHub源码
0 0
- 字符串转换为整数
- 字符串转换为整数
- 字符串转换为整数
- 字符串转换为整数
- 字符串转换为整数
- 字符串转换为整数
- 字符串转换为整数
- 字符串转换为整数
- 字符串转换为整数
- 字符串转换为整数
- 整数转换为字符串
- 字符串转换为整数
- 字符串转换为整数
- 整数转换为字符串
- 字符串转换为整数
- 字符串转换为整数
- 字符串转换为整数
- 字符串转换为整数
- 给超链接加onclick事件
- Does OS X not support epoll function?
- android5.1添加Email分享,bluetooth分享
- [二分答案 单调队列] BZOJ 3316 JC loves Mkk
- iOS开发小记:关于环信Demo3.0的使用总结以及昵称和头像问题的研究与解决
- 字符串转换为整数
- The test lifecycle
- 【bzoj4084】[Sdoi2015]bigyration hash
- 考研中的算法时间复杂度求解
- bootstrap左侧栏样式
- Win Server 系统远程桌面连接失败解决办法
- JS获取节点的兄弟,父级,子级元素
- 关于CocoaPods的安装总结
- phpMyAdmin配置文件config.inc.php详解