美文网首页
把字符串转换成整数

把字符串转换成整数

作者: 囧略囧 | 来源:发表于2020-02-17 10:49 被阅读0次

题目描述

将一个字符串转换成一个整数,要求不能使用字符串转换整数的库函数。 数值为0或者字符串不是一个合法的数值则返回0
输入描述:
输入一个字符串,包括数字字母符号,可以为空
输出描述:
如果是合法的数值表达则返回该数字,否则返回0
示例1
输入
+2147483647
1a33
输出
2147483647
0

这道题目逻辑较简单,但是明显考察的是各种边界条件、特殊用例。包括:
1、长度溢出
2、整型的上溢出与下溢出
3、非法字符(非数字字符)
4、带正负号的字符串
5、仅有正负号的字符
6、输入为null
7、空字符串""

下面是自己AC掉的代码,由于牛客讨论区未见到考虑周全代码,故不做整理

public class Solution {
    public int StrToInt(String str) {
        long result = 0;
        //虽然使用long型保存result,最后进行截断得int,但即使是long甚至longlong都有可能溢出,
        //所以必须对位数长度进行控制。int型的长度最多为10位,考虑到正负号取11位。
        if(str.length() > 11 || str == null || str.length() == 0)
            return 0;
        //设置reallength来记录除了符号位以外的数字位数,当然也可以通过对符号为置'0'从而求和的时
        //候直接使用str.length便可以,但java中String是不可变的,反而会更麻烦
        int reallength = str.length();
        int flag = 1;
        int start = 0;
        //判断是否存在符号位
        if(str.charAt(0) == '+') {
            flag = 1;
            reallength--;
            start = 1;
        }
        else if(str.charAt(0) == '-') {
            flag = -1;
            reallength--;
            start = 1;
        }
        //判断非法字符
        for(int i = start; i < reallength + start; i++) {
            if(str.charAt(i) >= '0' && str.charAt(i) <= '9') {
                result = result * 10 + str.charAt(i) - '0';
            }
            else 
                return 0;
        }
        result *= flag;
        //判断整型的上溢出及下溢出,二者的绝对值不相等
        if(result > Integer.MAX_VALUE || result < Integer.MIN_VALUE)
            return 0;
        else
            return (int) result;
    }
}

相关文章

  • 67:把字符串转换成整数

    题目67:把字符串转换成整数 实现一个函数stringToInt,实现把字符串转换成整数这个功能,不能使用atoi...

  • 把字符串转换成整数-java

    把字符串转换成整数 题目描述 将一个字符串转换成一个整数,要求不能使用字符串转换整数的库函数。 数值为0或者字符串...

  • JZ-049-把字符串转换成整数

    把字符串转换成整数 题目描述 将一个字符串转换成一个整数,要求不能使用字符串转换整数的库函数。 数值为0或者字符串...

  • 字符串转换成整数

    字符串转换成整数 题目描述: 输入一个由数字组成的字符串,把它转换成整数并输出。例如:输入字符串"123",输出整...

  • 剑指offer(四十九)把字符串转换成整数

    点击进入 牛客网题库:把字符串转换成整数 题目描述将一个字符串转换成一个整数,要求不能使用字符串转换整数的库函数。...

  • 剑指 offer:49、把字符串转化成整数

    49. 把字符串转换成整数 题目描述 将一个字符串转换成一个整数(实现Integer.valueOf(string...

  • 数据转换

    1.int(x[,base])(1)把符合数学格式的数字型字符串转换成整数;(2)把浮点数转换成整数,但是只是简单...

  • python 数据类型转换

    强制类型转换 int 函数 把符合数学格式的数字型字符串转换成整数 把浮点数转换成整数,但是只是简单的取整,而非四...

  • 字符串系列--字符转整型数

    1. 字符转整型数 输入一个由数字组成的字符串,把它转换成整数并输出。例如:输入字符串"123",输出整数123。...

  • 三、Java中级--2、错误处理的两个例子

    1、字符串转换成整数 对字符串“hello”转换成整数时,会报错,但是如果将s定义为“100”,在转换时就不会出错...

网友评论

      本文标题:把字符串转换成整数

      本文链接:https://www.haomeiwen.com/subject/iocvqctx.html