8. 字符串转换整数 (atoi)

简介: 8. 字符串转换整数 (atoi)

使其能将字符串转换成一个 32 位有符号整数.

 

public int myAtoi(String str) {
        int res = 0;
        int i = 0;
        int flag = 1;
        while (i < str.length() && str.charAt(i) == ' '){i++;} //处理空格
        if (i < str.length() && str.charAt(i) == '-') {flag=-1;}
        if (i < str.length() && str.charAt(i) == '+' || i < str.length() && str.charAt(i) == '-') {i++;}
        while (i<str.length() && Character.isDigit(str.charAt(i))) {
            int r = str.charAt(i) - '0';
            if (res > Integer.MAX_VALUE/10 || (res == Integer.MAX_VALUE/10 && r > Integer.MAX_VALUE%10)) {
                return flag > 0 ? Integer.MAX_VALUE : Integer.MIN_VALUE;
            }
            res = res*10 + r;
            i++;
        }
        return flag>0 ? res : -res;
    }
相关文章
|
2月前
|
存储 C语言
【我爱C语言】详解字符函数isdigit和字符串转换函数(atoi和snprintf实现互相转换字符串)&&三种strlen模拟实现2
【我爱C语言】详解字符函数isdigit和字符串转换函数(atoi和snprintf实现互相转换字符串)&&三种strlen模拟实现
|
2月前
|
C语言
Day6 不要二、把字符串转换成整数
Day6 不要二、把字符串转换成整数
33 0
|
2月前
|
存储 C语言
【我爱C语言】详解字符函数isdigit和字符串转换函数(atoi和snprintf实现互相转换字符串)&&三种strlen模拟实现1
【我爱C语言】详解字符函数isdigit和字符串转换函数(atoi和snprintf实现互相转换字符串)&&三种strlen模拟实现
|
2月前
|
存储 算法 C#
Leetcode算法系列| 8. 字符串转换整数 (atoi)
Leetcode算法系列| 8. 字符串转换整数 (atoi)
|
2月前
|
存储 C++
(C++)把字符串转换成整数
(C++)把字符串转换成整数
37 0
|
10月前
|
自然语言处理 Rust 算法
【算法】8. 字符串转换整数 (atoi)(多语言实现)
请你来实现一个 myAtoi(string s) 函数,使其能将字符串转换成一个 32 位有符号整数(类似 C/C++ 中的 atoi 函数)。 函数 myAtoi(string s) 的算法如下: 读入字符串并丢弃无用的前导空格 检查下一个字符(假设还未到字符末尾)为正还是负号,读取该字符(如果有)。 确定最终结果是负数还是正数。 如果两者都不存在,则假定结果为正。 读入下一个字符,直到到达下一个非数字字符或到达输入的结尾。字符串的其余部分将被忽略。 将前面步骤读入的这些数字转换为整数(即,"123" -> 123, "0032" -> 32)。如果没有读
|
算法 安全 Swift
LeetCode - #8 字符串转换整数(atoi)
不积跬步,无以至千里;不积小流,无以成江海,Swift社区 伴你前行。如果大家有建议和意见欢迎在文末留言,我们会尽力满足大家的需求。
|
算法 C++
字符串转换整数 (atoi)
字符串转换整数 (atoi)
134 0
|
存储 测试技术
leetcode:8.字符串转换正数(atoi)
当我们寻找到的第一个非空字符为正或者负号时,则将该符号与之后面尽可能多的连续数字组合起来,作为该整数的正负号;假如第一个非空字符是数字,则直接将其与之后连续的数字字符组合起来,形成整数。
28 0