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

    将字符串转成整数,跳过前面的空格。。然后转的时候注意防止溢出。。total=total*10+digit

    这个检查溢出的方式要掌握:最大整数除以10比total小(说明total*10就要溢出),当最大整数除以10等于total,且余数小于digit,那么执行上面公式也会溢出。。

    if(Integer.MAX_VALUE/10<total||Integer.MAX_VALUE/10==total&&Integer.MAX_VALUE%10<digit)

           return sign==1?Integer.MAX_VALUE:Integer.MIN_VALUE;

    class Solution {
        public int myAtoi(String str) {
            int index=0,sign=1,total=0;
            
            if(str.length()==0) return 0;
            //删除前面空格
            while(str.charAt(index)==' '&&index<str.length())
                index++;
            
            //处理符号
            if(str.charAt(index)=='+'||str.charAt(index)=='-'){
                sign=(str.charAt(index)=='+')?1:-1;
                index++;
            }
            //转换然后避免溢出。
            while(index<str.length()){
                int digit=str.charAt(index)-'0';
                if(digit<0||digit>9) break;
                
                //检查溢出。也可以先算出total,然后反回去看看是否相等(因为溢出,(total-digit)/10就不等于上一次的total)。下面这个判断方法要掌握
                if(Integer.MAX_VALUE/10<total||Integer.MAX_VALUE/10==total&&Integer.MAX_VALUE%10<digit)
                    return sign==1?Integer.MAX_VALUE:Integer.MIN_VALUE;
                
                total=total*10+digit;
                index++;
            }
            return total*sign;
            
        }
    }
  • 相关阅读:
    单链表
    找最长最短字符串
    注解
    Json字符串
    java的反射机制
    java类的加载与加载器
    String StringBuilder StringBuffer
    查看运行某类时当前的进程状态
    迷宫小游戏
    类的初始化过程、super关键字与函数绑定
  • 原文地址:https://www.cnblogs.com/xiaolovewei/p/8098533.html
Copyright © 2011-2022 走看看