剑指offer——把字符串转换成整数

来源:互联网 发布:seo技术教程分享 编辑:程序博客网 时间:2024/04/29 03:59

题目描述:

将一个字符串转换成一个整数,要求不能使用字符串转换整数的库函数。

边界条件:
数据上下 溢出
空字符串
只有正负号
有无正负号
错误标志输出


思路:

这里的关键是要对输入的字符串进行全面的考虑。包括字符串是否有效的判断、是否是负数以及字符串表示的整数是否越界等问题。对于字符串有效性的判断主要是null以及空串的判定;负数之所以需要判断是因为在计算的时候是有用的;而是否越界的问题也是需要考虑的。因为一个越界的数是不可能计算出来的,那么这时候可以简单返回一个0,表示越界的数。这三点都考虑之后,整体代码的健壮性就比较好了。


代码实现:

public class Solution {    public int StrToInt(String str) {        //设置一个布尔类型成员变量表示是否发生溢出        boolean isValid = true;        // 设置一个变量是否是负数        boolean isNegtive = false;        long sum = 0;        //第一个字符的下标        int begin = 0;        if(str!=null&&!str.equals("")){            //判断第一个字符是否是正数还是负数          char firstChar = str.charAt(begin);            if (firstChar == '+' || firstChar == '-') {                begin = 1;                if (firstChar == '-')                    isNegtive = true;            }            sum = strToIntCore(str, begin, isNegtive);        }        isValid = false;        return (int) sum;    }    private long strToIntCore(String str, int begin, boolean isNegtive) {        int flag = isNegtive ? -1 : 1;        long sum = 0;        // 需要转换的字符下标的起始位置        int index = begin;        while (index < str.length()) {            // 如果字符是从0到9的话            char curChar = str.charAt(index);            if (curChar >= '0' && curChar <= '9') {                sum = sum * 10 + flag * (curChar - '0');                // 考虑越界的情况,直接返回最小值或者最大值                if ((isNegtive && sum < Integer.MIN_VALUE) || (!isNegtive                        && sum > Integer.MAX_VALUE)) {                    return 0;                }            }else{                return 0;            }            index++;        }        return sum;    }}
1 0
原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 沉孔内六角螺丝滑丝怎么办 内六角螺丝滑了怎么办? 三色灯不变光了怎么办 卧室灯不变色了怎么办 圆柱齿轮减速机噪音大怎么办 轴与套间隙生锈怎么办 汽车停小区被刮怎么办 下楼梯摔跤了 屁股疼 怎么办 剧烈咳嗽震的肚子疼怎么办 饺子粘在盘子上怎么办 生饺子粘在盘子怎么办 饺子粘在案板上怎么办 饺子冷冻粘起了怎么办 冰箱饺子冻住了怎么办 水饺都冻一块了怎么办 wps卸载了后文件打不开怎么办 六角螺母拧滑了怎么办 梅花内六角螺丝扭滑丝了怎么办 眼镜螺丝滑丝了怎么办 大螺丝拆不下来怎么办 一字螺丝扭不动怎么办 带帽的螺丝拧花怎么办 螺丝拧不出来了怎么办 小六角螺丝滑丝怎么办 螺丝拧不下来了怎么办 固定水龙头的螺母扭不动怎么办 小螺丝帽拧花了怎么办 6角螺丝帽拧圆了怎么办 眼镜螺丝滑扣了怎么办 眼镜的螺丝掉了怎么办 螺丝松了怎么办小窍门 螺丝松了怎么办 小窍门 小螺丝完全滑牙怎么办 车座椅螺丝滑丝怎么办 塑料柱突然滑牙怎么办 螺丝底座滑丝了怎么办 螺丝拧木头不紧怎么办 六方螺母滑了怎么办 螺母滑丝怎么拧下来怎么办 安装车牌螺丝眼滑丝了怎么办 注塑机孔螺丝洞滑丝了怎么办