LeetCode String to Integer (atoi)
2016-01-18 16:33
429 查看
原题链接在这里:https://leetcode.com/problems/string-to-integer-atoi/
先把前后的空格去掉,然后取首个符号位。
注意溢出,若是res已经大于Intger.MAX_VALUE/10, res*10就会溢出,若是res == Integer.MAX_VALUE/10, 但最后一位比8大都会溢出,因为Integer的范围是 -2147483648 到 2147483647, 最后一位若是8的话就会溢出Integer.MAX_VALUE 的最后一位7.
Time Complexity: O(str.length()). Space: O(1).
AC Java:
先把前后的空格去掉,然后取首个符号位。
注意溢出,若是res已经大于Intger.MAX_VALUE/10, res*10就会溢出,若是res == Integer.MAX_VALUE/10, 但最后一位比8大都会溢出,因为Integer的范围是 -2147483648 到 2147483647, 最后一位若是8的话就会溢出Integer.MAX_VALUE 的最后一位7.
Time Complexity: O(str.length()). Space: O(1).
AC Java:
public class Solution { public int myAtoi(String str) { if(str == null || str.length() == 0){ return 0; } //去掉前后空格 str = str.trim(); int i = 0; char flag = '+'; //首个char是符号 if(str.charAt(i) == '+'){ i++; }else if(str.charAt(i) == '-'){ flag = '-'; i++; } int res = 0; while(i<str.length() && str.charAt(i) >= '0' && str.charAt(i) <= '9'){ //溢出 if(res > Integer.MAX_VALUE/10 || (res == Integer.MAX_VALUE/10 && str.charAt(i)>='8')){ return flag == '+' ? Integer.MAX_VALUE : Integer.MIN_VALUE; } res = res*10 + (str.charAt(i)-'0'); i++; } if(flag == '-'){ res = -res; } return res; } }
相关文章推荐
- css三种样式引入方法,html链接,html中<table>的使用方法
- html5元素简介<p>、<br/>、、background属性与bgcolor属性
- 设置列表(uitableview)顶端间隙
- 纯CSS控制背景图片100%自适应填充布局
- Hdu 1556 Color the ball
- Tomcat发布文件
- 发布APP时遇到此版本无效
- gridview 后台增加列
- MySql截取DateTime字段的日期值
- -----2.3队列及其实现------
- Andorid5.0原生下拉刷新简单实现
- raid详细介绍
- Android消息机制
- svm性别识别及HOG特征原理浅析
- Xcode插件管理工具Alcatraz的安装及使用
- std::string和std::wstring声明和用法解释
- 【算法】几种常用排序算法
- Activity的启动流程
- js检查元素是否包括在数组中
- 如何利用MATLAB并行计算缩短程序运行时间