LintCode-54. 转换字符串到整数

题目

描述

实现atoi这个函数,将一个字符串转换为整数。如果没有合法的整数,返回0。如果整数超出了32位整数的范围,返回INT_MAX(2147483647)如果是正整数,或者INT_MIN(-2147483648)如果是负整数。

样例

"10" =>10
"-1" => -1
"123123123123123" => 2147483647
"1.0" => 1

解答

思路

代码

public class Solution {
    /**
     * @param str: A string
     * @return: An integer
     */
    public int atoi(String str) {
        // write your code here
        String ss = null;
        StringBuffer sb = new StringBuffer();
        // 如果有小数点,截取到小数点并去除空格
        if (str.contains(".")){
            ss = str.substring(0, str.indexOf(".")).trim();
        }
        else {
            ss = str.trim();
        }
        try{
            if("".equals(ss)){
                return 0;
            }
            else return Integer.parseInt(ss);
        }
        catch(NumberFormatException ne){
            /*
            * 判断前缀,+,-,其他
            */
            // 前面是+
            if(ss.charAt(0) == '+'){
                getNums(1, ss, sb);
                if(sb.length() == 0) return 0;
                else if(sb.length() < ss.length()) return atoi(sb.toString());
                else return Integer.MAX_VALUE;
            }
            else if (ss.charAt(0) == '-'){
                sb.append('-');
                getNums(1, ss, sb);
                if(sb.length() == 1) return 0;
                else if(sb.length() < ss.length()) return atoi(sb.toString());
                else return Integer.MIN_VALUE;
            }
            else{
                getNums(0, ss, sb);
                if(sb.length() == 0) return 0;
                else if(sb.length() < ss.length()) return atoi(sb.toString());
                else return Integer.MAX_VALUE;
            }
        }
    }

    public void getNums(int start, String str, StringBuffer sb){
        for (int i = start; i < str.length(); i++){
            if(str.charAt(i) < '0' || str.charAt(i) > '9'){
                break;
            }
            sb.append(string.charAt(i));
        }
    }
}
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 字符串转换成整数 题目描述: 输入一个由数字组成的字符串,把它转换成整数并输出。例如:输入字符串"123",输出整...
    MinoyJet阅读 1,254评论 0 0
  • 计算机二级C语言上机题库(南开版) 1.m个人的成绩存放在score数组中,请编写函数fun,它的功能是:将低于平...
    MrSunbeam阅读 6,478评论 1 42
  • 2018-01-26 156天 结婚到底是不是个坑 我,单身,好多人都知道。以至于有人开始说,我是不是在“藏娇”,...
    壹言肆韵阅读 182评论 0 1
  • 一. 水平居中 margin: 0 auto 当子元素 display: inline-block 时,父元素 t...
    McDu阅读 15,648评论 1 4
  • 在高一紧张的学业中,我还是决定去旅游一趟让自己疲惫的身心得以放松! 一,出发了 路上的人还很稀少,乘着车,听...
    戬痕阅读 445评论 0 0