leetcode--8--实现atoi函数
来源:互联网 发布:pop软件中文版下载 编辑:程序博客网 时间:2024/06/05 11:52
<span style="font-family:Times New Roman;font-size:18px;"></span>
原题: String to Integer (atoi)
Implement atoi to convert a string to an integer.
解答:
C++版本
int atoi(const char *str) { int sign = 1, base = 0, i = 0; while (str[i] == ' ') { i++; }if (str[i] == '-' ) { sign = -1; i++}else if (str[i] == '+' ) i++; while (str[i] >= '0' && str[i] <= '9') { if (base > INT_MAX / 10 || (base == INT_MAX / 10 && str[i] - '0' > 7)) { if (sign == 1) return INT_MAX; else return INT_MIN; } base = 10 * base + (str[i++] - '0'); } return base * sign;}
Java版本
public int myAtoi(String str) { int index = 0, sign = 1, total = 0; //1. Empty string if(str.length() == 0) return 0; //2. Remove Spaces while(str.charAt(index) == ' ' && index < str.length()) index ++; //3. Handle signs if(str.charAt(index) == '+' || str.charAt(index) == '-'){ sign = str.charAt(index) == '+' ? 1 : -1; index ++; } //4. Convert number and avoid overflow while(index < str.length()){ int digit = str.charAt(index) - '0'; if(digit < 0 || digit > 9) break; //check if total will be overflow after 10 times and add digit if(Integer.MAX_VALUE/10 < total || Integer.MAX_VALUE/10 == total && Integer.MAX_VALUE %10 < digit) return sign == 1 ? Integer.MAX_VALUE : Integer.MIN_VALUE; total = 10 * total + digit; index ++; } return total * sign;}
思路:
考虑4个问题
1、前导空格
2、正负号
3、溢出
4、非法输入
注意:
1、不合法的输入包括
“ *24” 、“- 333” 、“ -+22” “233t2”
但是本程序认为”433322323233322t”合法,因为会提前退出。
2、 if (base > INT_MAX / 10 || (base == INT_MAX / 10 && str[i] - '0' > 7))
很重要,尤其是当base == INT_MAX / 10时,这个判断对于负数也是成立的,因为负数最小为-2147483648,当str[i] - '0' == 8时,也恰好是INT_MIN。
0 0
- leetcode--8--实现atoi函数
- LeetCode(atoi)实现atoi
- leetcode 题解 自主实现atoi()函数
- atoi函数实现
- atoi,itoa函数实现
- atoi函数的实现
- atoi()函数的实现
- atoi函数实现
- atoi函数实现
- atoi函数实现
- atoi函数实现_buwanmei
- 实现atoi函数
- atoi函数实现
- atoi()函数的实现
- atoi函数的实现
- atoi函数的实现
- atoi函数实现
- atoi函数实现
- 【.NET MVC】页面播放音乐
- DevExpress 报表控件特别慢的解决方法之一.
- HDU 5584 LCM Walk (数学推导)
- 获取设备的uuid 将uuid中的“-”去掉
- android 事件的分发机制
- leetcode--8--实现atoi函数
- Medium 152题 Maximum Product Subarray
- XZ_iOS之从本地Json中读取数据
- 对OkHttp3请求库简单封装
- 深度学习2——深度学习(三十八)卷积神经网络入门学习(2.0)
- 服务容错性设计
- Keil 结构体变量初始化
- 收集一些自己觉得不错的开发资源
- 一起学docker(2)--基本概念