前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >LintCode-54. 转换字符串到整数

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

作者头像
悠扬前奏
发布2019-05-31 10:24:43
5960
发布2019-05-31 10:24:43
举报
文章被收录于专栏:悠扬前奏的博客

题目

描述

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

样例

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

解答

思路

代码

代码语言:javascript
复制
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));
        }
    }
}
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2018.02.27 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 题目
    • 描述
      • 样例
      • 解答
        • 思路
          • 代码
          领券
          问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档