【Leetcode-easy】String to Integer(atoi)
2015-11-17 13:41
316 查看
题目要求:字符串->整型
* 1. 首先需要丢弃字符串前面的空格。
* 2. 然后可能有正负号(注意只取一个,如果有多个正负号,那么说这个字符串是无法转换的,返回0。比如测试用例里就有个“+-2”)。
* 3. 字符串可以包含0~9以外的字符,如果遇到非数字字符,那么只取该字符之前的部分,如“-00123a66”返回为“-123”。
* 4. 如果超出int的范围,返回边界值(2147483647或-2147483648)。
思路:顺序读取,顺序处理。正数,result=result*10+digit ;负数:result=reuslt*10-digit
* 1. 首先需要丢弃字符串前面的空格。
* 2. 然后可能有正负号(注意只取一个,如果有多个正负号,那么说这个字符串是无法转换的,返回0。比如测试用例里就有个“+-2”)。
* 3. 字符串可以包含0~9以外的字符,如果遇到非数字字符,那么只取该字符之前的部分,如“-00123a66”返回为“-123”。
* 4. 如果超出int的范围,返回边界值(2147483647或-2147483648)。
思路:顺序读取,顺序处理。正数,result=result*10+digit ;负数:result=reuslt*10-digit
public int myAtoi(String str) { if(str==null||str.length()==0) return 0; str=str.trim(); boolean negative=false; int i=0; if(str.charAt(i)=='+'){ i++; }else if(str.charAt(i)=='-'){ negative=true; i++; } double result=0; //必须要先使用double,否则会先越界 for(;i<str.length();i++){ int digit=str.charAt(i)-'0'; if(digit<0||digit>9) break; if(negative==false){ result=result*10+digit; if(result>Integer.MAX_VALUE){ return Integer.MAX_VALUE; } }else{ result=result*10-digit; if(result<Integer.MIN_VALUE){ return Integer.MIN_VALUE; } } } return (int)result; }
相关文章推荐
- 最长单调递增子序列(O(n^2))
- 构建证券行情分析系统——基础篇
- Office 365 Starter Project for ASP.NET MVC
- SDWebImage工作流程
- RocketMQ与Kafka对比(18项差异)
- undefined与null的区别
- Bash及其特性
- NSLog打印优化
- 解决js动态改变dom元素属性后页面及时渲染问题
- DevExpress 15.1.8重大变化说明及下载
- Dropping tests(01分数规划)
- 利用反射机制创建新类的两种方式及比较
- Linux下杀死进程(kill)的N种方法
- spring prototype怎么注入到singleton 里面
- Add Two Numbers
- RHCE 系列(七):在 Linux 客户端配置基于 Kerberos 身份验证的 NFS 服务器
- shell 脚本学习 awk
- 谈谈 React Native
- listpopupwindow和popupwindow
- mysql统计一年中每周的数据