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

【LeetCode】修炼之路-0008- String to Integer (atoi)【python】

题目

在这里插入图片描述

基本思路

其实题目已经说了如何实现了,我们按照给定的思路实现即可

1. 问题四大要求详解

1.1 处理空格 (Whitespace)

  • 忽略字符串开头的任何空格字符 (" ")
  • 例如: " 123" 应该被处理为 “123”
  • Python实现: 可以使用 strip() 方法或循环处理

1.2 处理正负号 (Signedness)

  • 检查第一个非空格字符是否为 ‘-’ 或 ‘+’
  • 如果是 ‘-’ 说明结果为负数
  • 如果是 ‘+’ 或者直接是数字,说明结果为正数
  • 如果既不是符号也不是数字,返回0

1.3 数字转换 (Conversion)

  • 从左到右读取字符,直到遇到非数字字符或到达字符串末尾
  • 跳过前导零:如:“00123” 应该转换为 123
  • 将读取到的数字字符转换为整数
  • 如果没有读取到任何数字,返回0
  • Python实现: 可以使用 isdigit() 方法判断字符是否为数字

1.4 处理溢出 (Rounding)

  • 32位有符号整数范围: [-2^31, 2^31 - 1]
  • 如果结果小于 -2^31,返回 -2^31
  • 如果结果大于 2^31 - 1,返回 2^31 - 1
  • Python实现:如之前所说,plython的int位数可以很长,所以可以最后处理溢出

示例Python代码结构:

def myAtoi(self, s: str) -> int:# 1. 处理空格# TODO: 处理前导空格# 2. 处理正负号# TODO: 检查并记录正负号# 3. 数字转换# TODO: 读取并转换数字# 4. 处理溢出# TODO: 确保结果在32位整数范围内return result

代码纯享

class Solution:def myAtoi(self, s: str) -> int:# 1. 去除前导空格s = s.strip()if not s:  # 如果字符串为空return 0# 2. 处理符号sign = 1start = 0if s[0] == '-':sign = -1start = 1elif s[0] == '+':start = 1# 3. 提取数字num = 0for i in range(start, len(s)):# 遇到非数字就结束if not s[i].isdigit():breaknum = num * 10 + int(s[i])# 4. 处理结果和范围num = sign * numif num < -2**31:return -2**31if num > 2**31 - 1:return 2**31 - 1return num

http://www.mrgr.cn/news/59191.html

相关文章:

  • 强大!Spring Boot 3.3 集成 PDFBox 轻松实现电子签章功能!
  • CSS-层叠性质
  • 如何修改IP地址:全面指南
  • 【C++篇】栈的层叠与队列的流动:在 STL 的韵律中探寻数据结构的优雅之舞
  • 020:无人机重要知识点名词解释
  • 智创 AI 新视界 -- 探秘 AIGC 中的生成对抗网络(GAN)应用
  • 数据结构(8.4_1)——简单选择排序
  • pixhawk 无人机 链接 遥控器
  • CSP-S 2024 游记
  • E - Permute K times 2
  • OpenFeign返回参数统一处理
  • 网络通信与并发编程(六)线程、进程池与线程池
  • 安全见闻1-9---清风
  • 大模型,多模态大模型面试问题记录24/10/25
  • 每日OJ题_牛客_小红的ABC_暴力/找规律_C++_Java
  • 了解AIGC——自然语言处理与生成
  • 大学新生入门编程的推荐路径
  • 神经架构搜索:自动化设计神经网络的方法
  • 深入理解JAVA虚拟机(一)
  • 全面解读 @Transactional 的传播机制:一次搞懂 Spring 事务的各种“传播方式”!
  • 常用设计模式...
  • 【Vulnhub靶场】DC-4
  • 2024高等代数【南昌大学】
  • 用kali入侵 DarkHole_2测试
  • 小白直接冲!一区蛇群优化算法+双向深度学习+注意力机制!SO-BiTCN-BiGRU-Attention多输入单输出回归预测
  • 安全见闻-web安全