LeetCode题解-字符串转数字-Java

简介: 字符串转数字题解,Java版

字符串转数字,这是个很有趣的题目。下面是我的解答,改了好几遍才通过。

class Solution {
   
    public static int myAtoi(String str) {
   
        //如果该字符串第一个字符非有效整数字符、串为空、仅包含空白 返回0
        if(str.isEmpty()) return 0;
        if(str.indexOf(".")!=-1) {
   
            if(str.indexOf(".")==0)return 0;
            str=str.substring(0, str.indexOf("."));
        }
        str=str.trim();
        char[] charArray = str.toCharArray();
        //转换
        int strlength = str.length();
        if(strlength==0)return 0;
        int point=0;
        int sign =-1;
        //开存储空间
        StringBuilder sbu = new StringBuilder(str.length());
        //判断第一位是否为为数符,且不是小数点
        if(isPlusOrMinusSign(charArray[point])||isNumber(charArray[point])){
   
            //若第一位位数符,则置标志位为0
            if(isPlusOrMinusSign(charArray[point])==true) sign=0;
            sbu.append(charArray[point++]);
        }else {
   
            return 0;
        }
        //获取有效值
        while(point<strlength&&isNumber(charArray[point])) {
   
            sbu.append(charArray[point]);
            point++;
        }
        if(sign==0)while(sbu.indexOf("0")==1) sbu.deleteCharAt(sbu.indexOf("0"));
        else while(sbu.indexOf("0")==0) sbu.deleteCharAt(sbu.indexOf("0"));
         if(sbu.length()==0)return 0;
        //delete(sbu.indexOf("0"));
        if(sbu.length()>11) {
   
            if(sbu.charAt(0) == 45) {
   
                return -2147483648;
            }
            return 2147483647;
        }
        if(sbu.length()==1&&sign==0) {
   
            return 0;
        }
        long info = 0;
        info = Long.parseLong(sbu.toString());
        if(info > 2147483647) {
   
            return 2147483647;
        }
        if(info < -2147483648) {
   
            return -2147483648;
        }
        return (int)info;
        //如果转换后的结果越界 返回0 | 2147 4836 47 -2147 4836 48
    }
    public static boolean isNumber(char info) {
   
        return info>=48&&info<=57;
    }

    public static boolean isPlusOrMinusSign(char info) {
   
        if(info==43||info==45) {
   
            return true;
        }
        return false;
    }
}

可以参考看看,效率不高。

目录
相关文章
|
13天前
|
Java
Java 字符串分割split空字符串丢失解决方案
Java 字符串分割split空字符串丢失解决方案
|
11天前
|
算法 Java C语言
C++和Java中的随机函数你玩明白了吗?内附LeetCode470.rand7()爆改rand10()巨详细题解,带你打败LeetCode%99选手
C++和Java中的随机函数你玩明白了吗?内附LeetCode470.rand7()爆改rand10()巨详细题解,带你打败LeetCode%99选手
|
1月前
|
存储 Java
JAVA字符串与其他类型数据的转换
JAVA字符串与其他类型数据的转换
27 4
|
存储 编译器 Linux
标准库中的string类(中)+仅仅反转字母+字符串中的第一个唯一字符+字符串相加——“C++”“Leetcode每日一题”
标准库中的string类(中)+仅仅反转字母+字符串中的第一个唯一字符+字符串相加——“C++”“Leetcode每日一题”
|
15天前
|
Java
Java练习题-键盘录入字符串实现大小写转换
Java练习题-键盘录入字符串实现大小写转换
20 2
|
16天前
|
存储 安全 Java
Java中实现高效的字符串拼接技术
【4月更文挑战第6天】在Java编程中,字符串拼接是一个常见的操作。然而,由于字符串的不可变性,频繁的拼接操作可能会导致性能问题。本文将探讨Java中实现高效字符串拼接的技术,包括使用StringBuilder类、StringBuffer类以及Java 8中的StringJoiner类。通过对比这些技术的优缺点,我们将为您提供在不同场景下选择合适的字符串拼接方法的建议。
|
24天前
|
Java
java 8 数组转字符串并以逗号分隔
java 8 数组转字符串并以逗号分隔
11 0
|
1月前
|
SQL Java
使用java中的String类操作复杂的字符串
使用java中的String类操作复杂的字符串
9 0
|
1月前
|
Java
使用java将字符串写入到指定的文件中
使用java将字符串写入到指定的文件中
11 0
|
1月前
|
Java 索引
Java字符串
Java字符串
7 0

热门文章

最新文章