zoukankan      html  css  js  c++  java
  • leetcode8 String to Integer (atoi)

    题目需求:

      输入一个字符串,输出对应的int值

    特殊处理:

    输入: null  输出:0

    输入: "a122"  输出:0

    输入: "   1233"  输出:1233

    输入: "  -123"  输出:-123

    输入: "+123"  输出:123

    输入: "  123a233"  输出:123

    输入: "-123 a 34" 输出:-123

    输入: "1232334344556566"  输出:int类型的最大值

    输入: "-123444554558"  输出:int类型的最小值

    思路:

      1、处理正号和负号

      2、处理空格

      3、处理数据的溢出

      4、处理数据中间出现非数字字符

    代码:

        public static int myAtoi(String str){
            if(str == null || str.equals("")){
                return 0;
            }
            char[] chs = str.toCharArray();
            long num = 0;
            boolean flag1 = true;
            int flag = 1;
            for(int i=0; i<chs.length; i++){
                //处理正负符号
                if(flag1 && chs[i] == '+'){
                    flag1 = false;
                    continue;
                }
                if(flag1 && chs[i] == '-'){
                    flag = -1;
                    flag1 = false;
                    continue;
                }
                //处理空格
                if(flag1 && chs[i] == ' '){
                    continue;
                }
                if(!(chs[i] >= '0' && chs[i] <= '9')){
                    //判断是否溢出
                    long num1 = num*flag;
                    if( num1 >= Integer.MAX_VALUE){
                        return Integer.MAX_VALUE;
                    }else{
                        if(num1 <= Integer.MIN_VALUE){
                            return Integer.MIN_VALUE;
                        }else{
                            return (int)num1;
                        }
                    }
                }else{
                    flag1 = false;
                    num = num*10 + chs[i]-'0';
                    long num1 = num*flag;
                    if( num1 >= Integer.MAX_VALUE){
                        return Integer.MAX_VALUE;
                    }else{
                        if(num1 <= Integer.MIN_VALUE){
                            return Integer.MIN_VALUE;
                        }else{
                            continue;
                        }
                    }
                }
            }
            long num1 = num*flag;
            if( num1 >= Integer.MAX_VALUE){
                return Integer.MAX_VALUE;
            }else{
                if(num1 <= Integer.MIN_VALUE){
                    return Integer.MIN_VALUE;
                }else{
                    return (int)num1;
                }
            }
    }

       

  • 相关阅读:
    项目中遇到的css问题(随手笔记)
    vue项目启动时突然出现漏洞错误(!未解决)
    vue项目本地启动,ip出现500错误
    vue项目安装vconsole的时候出现的bug
    在码云上创建项目
    npm 遇到的坑
    脚手架方式搭建vue项目
    从码云上下载react项目并配置成可运行状态
    ibatis-dynamic的用法
    struts2中s:select标签的使用
  • 原文地址:https://www.cnblogs.com/bywallance/p/5546112.html
Copyright © 2011-2022 走看看