zoukankan      html  css  js  c++  java
  • 剑指Offer对答如流系列

    面试题67:把字符串转换成整数

    题目描述

    请你写一个函数StrToInt,实现把字符串转换成整数这个功能。当然,不能使用库函数。

    问题分析

    既然不能使用库函数,那么我们就利用字符的ASCII值,将字符转换成数字,并进行累加。

    问题解答

        // 标识输入非法
        boolean isValid = false;
        public int strToInt(String str) {
            if(str == null || str.length()<=0) {
                return 0;
            }
               
            char[] chars = str.toCharArray();
            //先用long来存储,以防止越界
            long num=0;  
            boolean minus=false;
            for(int i=0; i<chars.length; i++){
                if(i==0 && chars[i]=='-'){
                    minus=true;
                } else if (i==0 && chars[i]=='+'){
                    minus=false;
                } else {
                    int a= chars[i]-'0';
                    if(a<0 || a>9){
                        isValid=false;
                        return 0;
                    }
                    num= (!minus) ? num*10+a : num*10-a;
                    //不放在最后面是为了防止str=‘+’的情况被判断为true
                    isValid=true;
                    if((!minus && num>0x7FFFFFFF) || (minus && num<0x80000000)){
                        isValid=false;
                        return 0;
                    }
                }
            }
            return (int)num;
        }
    
  • 相关阅读:
    深入理解linux启动过程
    Oracle 12c 的新功能:模式匹配查询
    AIX 常用命令汇总
    Oracle 11g ADRCI工具使用
    AIX TL的升级和回退
    oracle redo log的维护
    202. Happy Number
    198. House Robber
    203. Remove Linked List Elements
    217. Contains Duplicate
  • 原文地址:https://www.cnblogs.com/JefferyChenXiao/p/12249491.html
Copyright © 2011-2022 走看看