lotus

贵有恒何必三更眠五更起 最无益只怕一日曝十日寒

  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理
  1846 随笔 :: 0 文章 :: 109 评论 :: 288万 阅读

1. 题目

 

 https://leetcode.cn/problems/string-to-integer-atoi/submissions/428764685/

 

LeetCode 8 是一道字符串转换整数的题目,

考查的是如何处理各种边界情况和异常输入,比如空格、正负号、非数字字符、溢出等

2. 解法

 

 

 

解法思路:

  • 首先,使用trim()方法去除字符串s的开头和结尾的空格。
  • 然后,判断字符串是否为空,如果为空,就返回0。
  • 接着,判断字符串的第一个字符是否是正负号,如果是,就记录下符号,并将索引index加一,跳过这个字符。如果不是,就默认为正号。
  • 然后,使用一个循环遍历字符串的剩余字符,每次取出一个字符c,并进行以下操作:
    • 判断c是否是数字,如果不是,就跳出循环,结束转换。
    • 判断当前的结果result是否会溢出整数范围,如果是,就根据符号返回最大值或最小值。
    • 将c转换为数字,并将result乘以10再加上c,得到新的结果。
    • 将索引index加一,继续下一个字符。
  • 最后,将结果result乘以符号sign,并返回。

 

具体实现

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
class Solution {
    public int myAtoi(String s) {
        // 去除空格
        s = s.trim();
        // 判断是否为空
        if (s.length() == 0) {
            return 0;
        }
        // 判断正负号
        int sign = 1;
        int index = 0;
        if (s.charAt(0) == '+') {
            index++;
        } else if (s.charAt(0) == '-') {
            sign = -1;
            index++;
        }
        // 转换数字
        int result = 0;
        while (index < s.length()) {
            char c = s.charAt(index);
            // 判断是否为数字
            if (c < '0' || c > '9') {
                break;
            }
            // 判断是否溢出
            if (result > Integer.MAX_VALUE / 10 || (result == Integer.MAX_VALUE / 10 && c - '0' > Integer.MAX_VALUE % 10)) {
                return sign > 0 ? Integer.MAX_VALUE : Integer.MIN_VALUE;
            }
            // 累加数字
            result = result * 10 + (c - '0');
            index++;
        }
        // 返回结果
        return sign * result;
    }
}

  

3. 总结

 

posted on   白露~  阅读(6)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 分享4款.NET开源、免费、实用的商城系统
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
· 上周热点回顾(2.24-3.2)
历史上的今天:
2021-04-28 深入JVM关闭与关闭钩子
2021-04-28 ShutdownHook - Java 优雅停机解决方案
2021-04-28 RocketMQ性能优化
2021-04-28 RocketMQ调优心得总结
2021-04-28 RocketMQ性能优化【实战笔记】
2021-04-28 RocketMQ在面试中那些常见问题及答案+汇总
2019-04-28 24种设计模式的通俗理解
点击右上角即可分享
微信分享提示