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

简介: 本文首发于我的个人博客:尾尾部落题目描述将一个字符串转换成一个整数(实现Integer.valueOf(string)的功能,但是string不符合数字要求时返回0),要求不能使用字符串转换整数的库函数。

本文首发于我的个人博客:尾尾部落

题目描述

将一个字符串转换成一个整数(实现Integer.valueOf(string)的功能,但是string不符合数字要求时返回0),要求不能使用字符串转换整数的库函数。 数值为0或者字符串不是一个合法的数值则返回0。

解题思路

常规思路,先判断第一位是不是符号位,如果有符号,有flag 做标记。
遍历字符串中的每个字符,如果存在非数字的字符,直接返回 0,否则,用当前字符减去'0'得到当前的数字,再进行运算。

参考代码

public class Solution {
    public int StrToInt(String str) {
        if(str.length() == 0)
            return 0;
        int flag = 0;
        if(str.charAt(0) == '+')
            flag = 1;
        else if(str.charAt(0) == '-')
            flag = 2;
        int start = flag > 0 ? 1 : 0;
        long res = 0;
        while(start < str.length()){
            if(str.charAt(start) > '9' || str.charAt(start) < '0')
                return 0;
            res = res * 10 + (str.charAt(start) - '0');
            start ++;
        }
        return flag == 2 ? -(int)res : (int)res;
    }
}
目录
相关文章
|
19天前
|
Java 测试技术
java字符串练习题5、罗马数字转整数
java字符串练习题5、罗马数字转整数
33 0
【剑指offer】- 把字符串转换成整数 -46/67
【剑指offer】- 把字符串转换成整数 -46/67
|
19天前
|
存储
【字符串】13. 罗马数字转整数
【字符串】13. 罗马数字转整数
|
19天前
|
算法 Java
每日一刷《剑指offer》字符串篇之把字符串转换成整数(atoi)
每日一刷《剑指offer》字符串篇之把字符串转换成整数(atoi)
38 0
每日一刷《剑指offer》字符串篇之把字符串转换成整数(atoi)
|
7月前
剑指offer JZ49把字符串转换成整数
剑指offer JZ49把字符串转换成整数
26 0
|
12月前
|
存储 算法 测试技术
力扣7-整数反转&力扣8-字符串转换整数 (atoi)
力扣7-整数反转&力扣8-字符串转换整数 (atoi)
67 0
|
12月前
|
存储 算法 Java
leetcode刷题记录:7.整数反转,8.字符串转整数,9.回文数
leetcode刷题记录:7.整数反转,8.字符串转整数,9.回文数
40 0
|
12月前
剑指offer 75. 把字符串转换成整数
剑指offer 75. 把字符串转换成整数
44 0
|
12月前
剑指offer 19. 表示数值的字符串
剑指offer 19. 表示数值的字符串
30 0
|
12月前
力扣 8. 字符串转换整数 (atoi) 解题
力扣 8. 字符串转换整数 (atoi) 解题
61 0