当前位置: 首页 > article >正文

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

题目

请你来实现一个 m y A t o i ( s t r i n g s ) myAtoi(string s) myAtoi(strings) 函数,使其能将字符串转换成一个 32 32 32 位有符号整数(类似 C / C + + C/C++ C/C++ 中的 a t o i atoi atoi 函数)。

例子

官网

  1. 输入: s = “ 42 " s = “42" s=“42"
    输出: 42 42 42
  2. 输入: s = " − 42 " s = " -42" s="42"
    输出: − 42 -42 42
  3. 输入: s = " 4193 w i t h w o r d s " s = "4193 with words" s="4193withwords"
    输出: 4193 4193 4193

思路

  • 时间复杂度: O ( n ) O(n) O(n)
  • 空间复杂度: O ( n ) O(n) O(n)
class Solution:
    def myAtoi(self, s: str) -> int:
        nums = []
        i = 0
        sign = 1
        # 去除前导空格
        while i < len(s) and s[i] == ' ':
            i += 1
        
        # 判断符号位
        if i < len(s) and (s[i] == '-' or s[i] == '+'):
            if s[i] == '-':
                sign = -1
            i += 1
        
        # 按顺序读取数字,直到非数字字符
        while i < len(s) and s[i].isdigit():
            nums.append(s[i])
            i += 1
            # 判断下一个字符是否为数字
            if i < len(s) and not s[i].isdigit():
                break
        
        # 将数字字符串转换为数字,同时乘上符号位
        result = sign * int(''.join(nums)) if nums else 0
        
        # 判断是否超出整数范围
        INT_MIN, INT_MAX = -2**31, 2**31-1
        if result < INT_MIN:
            return INT_MIN
        elif result > INT_MAX:
            return INT_MAX
        else:
            return result


http://www.kler.cn/a/7810.html

相关文章:

  • Java垃圾回收算法
  • 使用c#实现TCP客户端与服务器端
  • 大模型研究报告 | 2024年中国金融大模型产业发展洞察报告|附34页PDF文件下载
  • 表的数据结构和常见操作
  • 算法每日双题精讲——滑动窗口(长度最小的子数组,无重复字符的最长子串)
  • react + ts定义接口类型写法
  • 求给定集合中好数对的个数
  • AST解混淆
  • mysql双游标嵌套循环
  • 开源Icon大合集
  • .net特性(个人笔记)
  • WRF-cmaq模式
  • Qt——实现一个简单的获取文件信息的dialog
  • 蓝易云:Linux系统命令-ls命令详细介绍.系列【9】
  • Java练习题
  • 华为OD机试-投篮大赛-2022Q4 A卷-Py/Java/JS
  • Windows编程基础
  • 基于SpringBoot+Vue家乡特色推荐系统
  • 获得lazada商品详情 API
  • 4.5-4.6学习总结
  • 详细分析国外主机的性能和稳定性如何?
  • 医疗串口屏有哪些特性?
  • 异步线程池 CompletableFuture 异步编排 【下篇】
  • 高程实验5 素数
  • 制造业短视频标题文案写作技巧
  • 测试碎碎念:selenium