字符串转换为整数 : atoi

可能的输入:
1 带符号数
2 无符号数
3 零
4 空指针
5 超出表示范围 – 暂时仅仅是直接退出且设置最小 – 可以考虑此时抛个异常
6 非法输入,比如并不是一个0-9或者+ -组成的字符串 – 对于非法输入一律返回的是Integer.MIN_VALUE

public class _Q49<T> {public long StrToInt(String str){if(str == null) return Long.MIN_VALUE; // 输入非法还是抛异常提示或者约定if(str.length() == 0) return 0;// 判断输入字符串是否合法for (int i = 0; i < str.length(); i++) {if (!judge(str.charAt(i))) {return Long.MIN_VALUE;}}char chars[] = str.toCharArray();long result = 0;if(chars[0] == '-' || chars[0] == '+'){ // 有符号数result = trans(str.substring(1));}else{ // 无符号数result = trans(str);}if(result > 0 && chars[0] == '-') result = -result;return result;}private long trans(String str){if(str.length() == 0) return 0;long result = 0;for(int i=0; i<str.length(); i++){result = result*10 + (str.charAt(i)-'0');if(result > Long.MAX_VALUE){result = Long.MIN_VALUE;break;}}return result;}private boolean judge(char c){if(c == '-' || c == '+') return true;if(c >= '0' && c <= '9') return true;return false;}}

测试代码:

public class _Q49Test extends TestCase {_Q49<?> a2i = new _Q49();public void test(){String str1 = "123456";String str2 = "-123456";String str3 = "-6";String str4 = "-";String str5 = "+1";String str6 = "+abc";String str7 = null;System.out.println(a2i.StrToInt(str1));System.out.println(a2i.StrToInt(str2));System.out.println(a2i.StrToInt(str3));System.out.println(a2i.StrToInt(str4));System.out.println(a2i.StrToInt(str5));System.out.println(a2i.StrToInt(str6));System.out.println(a2i.StrToInt(str7));}}

【剑指offer-Java版】49把字符串转换为整数相关推荐

  1. 剑指offer java版 test3—从尾到头打印链表

    标题:剑指offer java版 test3-从尾到头打印链表 题目:输入一个链表,按链表从尾到头的顺序返回一个ArrayList. 解答:知识不够全面,用ArrayList做的 但是看到大佬们还可以 ...

  2. 剑指offer面试题[49]-把字符串转化为整型

    题目: 将一个字符串转换成一个整数,要求不能使用字符串转换整数的库函数. 数值为0或者字符串不是一个合法的数值则返回0 输入描述: 输入一个字符串,包括数字字母符号,可以为空. 输出描述: 如果是合法 ...

  3. 剑指offer java版 test42—找出和为S的两个数,左右夹逼法(双指针法)

    前言:受上一题的启发,这题自己也编出来了.在碰到这种有序数列的时候,经常会用到双指针法,一个指左边,一个指右边,然后依照规则移动,增加或缩小范围.很实用. 题目: 输入一个递增排序的数组和一个数字S, ...

  4. 剑指offer java版(三)

    二叉搜索树的后序遍历 问题描述 输入一个整数数组,判断该数组是不是某二叉搜索树的后序遍历的结果.如果是则输出Yes,否则输出No.假设输入的数组的任意两个数字都互不相同. 解题思路 对于后序遍历来说, ...

  5. 剑指offer java版(一)

    二维数组中的查找 问题描述 在一个二维数组中(每个一维数组的长度相同),每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序.请完成一个函数,输入这样的一个二维数组和一个整数,判断数 ...

  6. 剑指offer没有java版吗_剑指Offer(Java版) 持续更新中

    面试题2 单例(之前有整理,略) 面试题3 二维数组中的查找 public boolean find(int target, int [][] array) { boolean found = fal ...

  7. 剑指Offer第二版Java代码实现

    剑指Offer第二版Java代码实现 A.单例模式 面试题 2:实现Singleton模式 B.面试需要的基础知识 面试题 3:数组中重复的数字 面试题 4:二维数组的查找 面试题 5:替换空格 面试 ...

  8. 剑指offer——面试题49:把字符串转换成整数

    剑指offer--面试题49:把字符串转换成整数 Solution1: 代码写的啰嗦,但思路清晰..LeetCode上有相似的题目并考虑了溢出,可以参考LeetCode8答案 class Soluti ...

  9. 剑指offer最新版_剑指Offer——Java版本(持续更新)

    0 前言 邻近校招,算法要命!!! 本文为研究剑指Offer过程中的笔记,整理出主要思路以及Java版本题解,以便记忆和复习. 参考整理来自<剑指Offer 第二版>. 特别注意,对每道题 ...

  10. 【LeetCode】剑指 Offer 20. 表示数值的字符串

    [LeetCode]剑指 Offer 20. 表示数值的字符串 文章目录 [LeetCode]剑指 Offer 20. 表示数值的字符串 package offer;import java.util. ...

最新文章

  1. 生产性服务业的源起及内涵(制造服务业的前世今生之一)
  2. Redis 学习笔记-NoSQL数据库 常用五大数据类型 Redis配置文件介绍 Redis的发布和订阅 Redis_事务_锁机制_秒杀 Redis应用问题解决 分布式锁
  3. pl sql mysql 版本_pl sql developer连oracle哪个版本的数据库都可以吗
  4. 《AIOps在360的落地实践》分享实录
  5. access设计视图打不开_铁路桥梁BIM程序的设计与实现
  6. 《Excel 职场手册:260招菜鸟变达人》一第 37 招 用条件格式制作项目进度图
  7. 图标字体Font Awesome 4.7 的引入与使用
  8. 条形码转化成二维码_免费在线条形码生成器_村美小站
  9. 计算机局域网硬件维护与网络安全的分析
  10. 嵌入式-----产品手册----塔吊黑匣子电气安装培训
  11. matlab教学ppt,matlab教程ppt(完整版).ppt
  12. 安卓系统实现播放器变速功能
  13. ROS NOETIC 思岚激光雷达A2M8启动历程
  14. od 查找特征码和特征码模糊搜索教程
  15. Cluster - 基本概念
  16. AI智能生图技术的未来趋势
  17. 什么是数据指标体系?
  18. Python爬虫入门 | 5 爬取小猪短租租房信息
  19. 用友u8修改服务器id,用友u8服务器地址修改
  20. javaMail的使用以及trying to connect to host “1xxx@163.com“, port 25, isSSL false异常

热门文章

  1. mac mysql 链接_Mysql mac安装以及navicat链接
  2. 读取nas_NAS不够快?那就上SSD享受如火箭般的体验吧!
  3. bartlett方差齐性检验_R语言实用教程-数据正态性以及方差齐性检验
  4. WPF:Graphics图表--EncodingAndersonDecoding图像编解码(2)
  5. Python中str.replace()的使用方法
  6. 机器学习——利用K-均值聚类算法对未标注数据分组
  7. 【编码】-小Ho的防护盾-2016.08.14
  8. linux常见命令汇总
  9. JSON支持什么对象/类型?
  10. 朴素贝叶斯法(二)——基本方法