Solution 20: 字符串转整数问题
2015-07-08 10:06
417 查看
问题描述
输入一个表示整数的字符串,把该字符串转成整数输出。
解决思路
考虑如下情况:
(1) 符号位;
(2) 是否溢出?溢出后的处理;
(3) 对于不合法的输入的处理。
程序
1. 假设输入合法
2. 假设输入不一定合法
输入一个表示整数的字符串,把该字符串转成整数输出。
解决思路
考虑如下情况:
(1) 符号位;
(2) 是否溢出?溢出后的处理;
(3) 对于不合法的输入的处理。
程序
1. 假设输入合法
public class Atoi { public int transToInt(String s) { if (s == null || s.length() == 0) { return 0; } boolean pos = true; int i = 0; char bc = s.charAt(0); if (bc == '+' || bc == '-') { ++i; pos = bc == '-' ? false : true; } s = s.substring(i); // remove begin sign int sum = 0; int base = 10; for (i = 0; i < s.length(); i++) { sum = sum * base + (s.charAt(i) - '0'); } return pos ? sum : -sum; } }
2. 假设输入不一定合法
public int transToIntCheckIllegal(String s) throws Exception { if (s == null || s.length() == 0) { return 0; } boolean pos = true; int i = 0; char bc = s.charAt(0); if (bc == '+' || bc == '-') { ++i; pos = bc == '-' ? false : true; } s = s.substring(i); // remove begin sign long sum = 0; int base = 10; for (i = 0; i < s.length(); i++) { char c = s.charAt(i); if (!(c >= '0' && c <= '9')) { throw new Exception("Error: Illegal input!"); } sum = sum * base + (c - '0'); } if (pos && sum >= Integer.MAX_VALUE) { return Integer.MAX_VALUE; } if (!pos && -sum <= Integer.MIN_VALUE) { return Integer.MIN_VALUE; } return (int) (pos ? sum : -sum); }
相关文章推荐
- TCP中的MSS解读(转)
- 贾扬清:希望Caffe成为深度学习领域的Hadoop
- Apache日志的一些操作命令技巧
- 一个PHP实现的轻量级简单爬虫
- 线性布局匹配全屏竟然不管用
- Serializable:serialVersionUID
- PostgreSQL中的SQL语句示例
- AF_INET与套接字
- Volley动态获取图片
- 资产负债率
- Unity扩展方法
- Ubuntu 14.04 Android 使用Maven一个 用例project
- linux系统下file使用的magic文件格式说明
- NSArray、NSMutableArray基本用法
- android BLE
- Android Studio使用技巧系列教程(一)
- Android Studio 如何打开两个项目?
- HDFS客户端的权限错误:Permission denied
- Linux学习路线
- 社説 20150708 産業革命遺産 祝賀に水差す韓国の政治工作