请你来实现一个 myAtoi(string s) 函数,使其能将字符串转换成一个 32 位有符号整数(类似 C/C++ 中的 atoi 函数)。

函数 myAtoi(string s) 的算法如下:

读入字符串并丢弃无用的前导空格
检查下一个字符(假设还未到字符末尾)为正还是负号,读取该字符(如果有)。 确定最终结果是负数还是正数。 如果两者都不存在,则假定结果为正。
读入下一个字符,直到到达下一个非数字字符或到达输入的结尾。字符串的其余部分将被忽略。
将前面步骤读入的这些数字转换为整数(即,“123” -> 123, “0032” -> 32)。如果没有读入数字,则整数为 0 。必要时更改符号(从步骤 2 开始)。
如果整数数超过 32 位有符号整数范围 [−231,  231 − 1] ,需要截断这个整数,使其保持在这个范围内。具体来说,小于 −231 的整数应该被固定为 −231 ,大于 231 − 1 的整数应该被固定为 231 − 1 。
返回整数作为最终结果。
注意:

本题中的空白字符只包括空格字符 ’ ’ 。
除前导空格或数字后的其余字符串外,请勿忽略 任何其他字符。

示例 1:

输入:s = “42”
输出:42
解释:加粗的字符串为已经读入的字符,插入符号是当前读取的字符。
第 1 步:“42”(当前没有读入字符,因为没有前导空格)
^
第 2 步:“42”(当前没有读入字符,因为这里不存在 ‘-’ 或者 ‘+’)
^
第 3 步:“42”(读入 “42”)
^
解析得到整数 42 。
由于 “42” 在范围 [-231, 231 - 1] 内,最终结果为 42 。
示例 2:

输入:s = " -42"
输出:-42
解释:
第 1 步:" -42"(读入前导空格,但忽视掉)
^
第 2 步:" -42"(读入 ‘-’ 字符,所以结果应该是负数)
^
第 3 步:" -42"(读入 “42”)
^
解析得到整数 -42 。
由于 “-42” 在范围 [-231, 231 - 1] 内,最终结果为 -42 。
示例 3:

输入:s = “4193 with words”
输出:4193
解释:
第 1 步:“4193 with words”(当前没有读入字符,因为没有前导空格)
^
第 2 步:“4193 with words”(当前没有读入字符,因为这里不存在 ‘-’ 或者 ‘+’)
^
第 3 步:“4193 with words”(读入 “4193”;由于下一个字符不是一个数字,所以读入停止)
^
解析得到整数 4193 。
由于 “4193” 在范围 [-231, 231 - 1] 内,最终结果为 4193 。
示例 4:

输入:s = “words and 987”
输出:0
解释:
第 1 步:“words and 987”(当前没有读入字符,因为没有前导空格)
^
第 2 步:“words and 987”(当前没有读入字符,因为这里不存在 ‘-’ 或者 ‘+’)
^
第 3 步:“words and 987”(由于当前字符 ‘w’ 不是一个数字,所以读入停止)
^
解析得到整数 0 ,因为没有读入任何数字。
由于 0 在范围 [-231, 231 - 1] 内,最终结果为 0 。
示例 5:

输入:s = “-91283472332”
输出:-2147483648
解释:
第 1 步:"-91283472332"(当前没有读入字符,因为没有前导空格)
^
第 2 步:"-91283472332"(读入 ‘-’ 字符,所以结果应该是负数)
^
第 3 步:"-91283472332"(读入 “91283472332”)
^
解析得到整数 -91283472332 。
由于 -91283472332 小于范围 [-231, 231 - 1] 的下界,最终结果被截断为 -231 = -2147483648 。

来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/string-to-integer-atoi
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

class Solution:def myAtoi(self, s: str) -> int:x = ""j = 0s+="cc"label="1234567890"for i in s:if  i in label and s[j+1] not in label:return self.get_l(x+i)if i in " +-1234567890":if i ==" ":if  s[j+1]==" ":x += ielif s[j+1]=="+" or s[j+1]=="-":if s[j+2] in label:x+=ielse:return 0elif s[j+1] in label:x+=ielif i=="+" or i=="-":if s[j+1] in label:x+=ielse:return 0elif i in label:x+=ielse:return 0j+=1return self.get_l(x)def get_l(self, x):x = int(x)if -2**31<x < 2 ** 31 - 1:return xelif x>0:return 2 ** 31 - 1else:return -2**31

leetcode算法第8题相关推荐

  1. leetcode算法第四题

    给定两个大小为 m 和 n 的正序(从小到大)数组 nums1 和 nums2.请你找出并返回这两个正序数组的中位数.进阶:你能设计一个时间复杂度为 O(log (m+n)) 的算法解决此问题吗?示例 ...

  2. leetcode算法第9题

    给你一个整数 x ,如果 x 是一个回文整数,返回 true :否则,返回 false . 回文数是指正序(从左向右)和倒序(从右向左)读都是一样的整数.例如,121 是回文,而 123 不是. 示例 ...

  3. leetcode算法第5题

    给你一个字符串 s,找到 s 中最长的回文子串.示例 1:输入:s = "babad" 输出:"bab" 解释:"aba" 同样是符合题意的 ...

  4. leetcode算法第7题

    给你一个 32 位的有符号整数 x ,返回 x 中每位上的数字反转后的结果.如果反转后整数超过 32 位的有符号整数的范围 [−231, 231 − 1] ,就返回 0.假设环境不允许存储 64 位整 ...

  5. leetcode算法第三题

    给定一个字符串,请你找出其中不含有重复字符的 最长子串 的长度.示例 1:输入: s = "abcabcbb" 输出: 3 解释: 因为无重复字符的最长子串是 "abc& ...

  6. LeetCode算法题-Nth Digit(Java实现)

    这是悦乐书的第215次更新,第228篇原创 01 看题和准备 今天介绍的是LeetCode算法题中Easy级别的第83题(顺位题号是400).找到无限整数序列的第n个数字1,2,3,4,5,6,7,8 ...

  7. LeetCode算法题-Reverse Linked List(Java实现)

    这是悦乐书的第192次更新,第195篇原创 01 看题和准备 今天介绍的是LeetCode算法题中Easy级别的第51题(顺位题号是206).反转单链表.例如: 输入:1-> 2-> 3- ...

  8. LeetCode算法题-Convert a Number to Hexadecimal(Java实现)

    这是悦乐书的第219次更新,第231篇原创 01 看题和准备 今天介绍的是LeetCode算法题中Easy级别的第86题(顺位题号是405).给定一个整数,写一个算法将其转换为十六进制.对于负整数,使 ...

  9. leetcode算法题--零钱兑换

    原题链接:https://leetcode-cn.com/problems/coin-change/ 相关题目:leetcode算法题–完全平方数★ 动态规划 dp[i] i从0到amount,dp[ ...

最新文章

  1. C++中的迭代器(STL迭代器)iterator
  2. docker java镜像_Docker JDK镜像
  3. 分库分表技术演进最佳实践-修订篇
  4. 详解Java中的注解
  5. mysql50到例题_关于MySQL的经典例题50道 答案参考
  6. Python文件操作中进行字符串替换(保存到新文件/当前文件)
  7. c语言编码风格,讲嵌入式C语言编码风格.ppt
  8. 是隐极电机_资料 | 发电机定子绕组端部动态特性试验详解
  9. 一款精美的漂亮的EMLOG模板
  10. ppt学习02——字体
  11. 浙江利捷分析报告(0607)
  12. EventBus源码解析 1
  13. Linux:解决centos7每次更换IP方法
  14. initialization on demand holder
  15. 傅盛认知三部曲之三:战略就是格局+破局
  16. BLE射频杂散源的由来,以及常见处理办法
  17. 南航数据分析与挖掘课设1(下)——基于多元线性回归模型,ARIMA序列的中国GDP增长影响因素研究及预测(R语言代码附录)
  18. MMC、SD、TF、SDIO、SDMMC简介
  19. PTA L2-039 清点代码库
  20. 【android studio】 the logging tag can be at most 23 characters

热门文章

  1. linux 查看san链路状态,linux系统运行状态检查
  2. matlab篮球队需要五名队员,MATLAB应用与数学欣赏.doc
  3. 嵌入式开发 ---必看图书
  4. 中国计算机专业专科学校排名2015,计算机专科学校排名前十(最出名的10所计算机学院)...
  5. 阶乘在c语言代码大全,求10000的阶乘(c语言代码实现)
  6. 获取鼠标在盒子中的坐标
  7. matlab 某些函数
  8. 初识Tcl(三):Tcl 变量及运算符
  9. 【 C 】动态内存分配实用案例(一)之读取、排序和打印一列整形值
  10. 结构型模式 -- 代理模式(静态代理动态代理)