分析这道题,输入数据有如下几种情况:

第一类:输入字符串无法转换为整数

这一类包含以下几种情况:

  1. 输入字符串为空
  2. 开头字符为数字、符号(+,-)、空格以外的字符
  3. 有多个加减符号的字符串
  4. 符号没有紧跟数字
  5. 字符串中没有数字

以上这几种情况直接返回 0

第二类: 输入字符串部分可以转换

这类情况中,数字后如出现其他不是数字的字符,那么该符号出现位置后的所有字符无效

第三轮: 可以全部转换

这类该怎么转就怎么转

参考代码如下:

class Solution:
def myAtoi(self, str):
"""
:type str: str
:rtype: int
"""
raw_str = str
# set of valid
valid_set = {
'', '', '', '', '', '', '', '', '', '', '+', '-', ' '
}
# set of num
num_set = {'', '', '', '', '', '', '', '', '', ''}
# set of sign
sign_set = {'+', '-'}
# set of space k = # current location
m = # the number of signs
p = # the last space location
n = # the last signs location
i = # the number of 'num' temp_str = '' # case1: str is Null
if len(raw_str) == :
return # case2: illegal words at begining
if raw_str[] not in valid_set:
return for s in raw_str:
if s in sign_set:
# the sign after num is not valid
if i > :
break m = m +
n = k
# case3: if there are more than signs
if m > :
return
if s == ' ':
# the space after num is not valid
if i > :
break
p = k if s in num_set:
# case4: if the last sign location before last space location
if p > n and m > :
return
i = i +
temp_str = temp_str + s if s not in valid_set:
k = k +
break k = k + # case5: have no number in str:
if i == :
return
else:
# the num with sign
if m > :
temp_str = raw_str[n] + temp_str covert_int = int(temp_str) # overflow
if covert_int >= ** - :
return ** -
if covert_int <= (-**):
return (-**) return covert_int # test
s = Solution()
print(s.myAtoi("-42"))
参考:
 
 
 
 
 

leetcode题目讲解(Python):字符串转整数 (atoi)的更多相关文章

  1. 前端与算法 leetcode 8. 字符串转换整数 (atoi)

    目录 # 前端与算法 leetcode 8. 字符串转换整数 (atoi) 题目描述 概要 提示 解析 解法一:正则 解法二:api 解法二:手搓一个api 算法 传入测试用例的运行结果 执行结果 G ...

  2. LeetCode 8. 字符串转换整数 (atoi)(String to Integer (atoi))

    8. 字符串转换整数 (atoi) 8. String to Integer (atoi) 题目描述 LeetCode LeetCode8. String to Integer (atoi)中等 Ja ...

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

    8. 字符串转换整数 (atoi) 首先,该函数会根据需要丢弃无用的开头空格字符,直到寻找到第一个非空格的字符为止. 当我们寻找到的第一个非空字符为正或者负号时,则将该符号与之后面尽可能多的连续数字组 ...

  4. 字符串转换整数 (atoi) C++实现 java实现 leetcode系列(八)

    字符串转换整数 (atoi) java实现 C++实现 请你来实现一个 atoi 函数,使其能将字符串转换成整数. 首先,该函数会根据需要丢弃无用的开头空格字符,直到寻找到第一个非空格的字符为止. 当 ...

  5. LeetCode8. 字符串转整数 (atoi)

    8. 字符串转整数 (atoi) 描述 实现 atoi,将字符串转为整数. 在找到第一个非空字符之前,需要移除掉字符串中的空格字符.如果第一个非空字符是正号或负号,选取该符号,并将其与后面尽可能多的连 ...

  6. Leetcode(8)字符串转换整数

    Leetcode(8)字符串转换整数 [题目表述]: 请你来实现一个 atoi 函数,使其能将字符串转换成整数. 首先,该函数会根据需要丢弃无用的开头空格字符,直到寻找到第一个非空格的字符为止. 当我 ...

  7. 17、字符串转换整数 (atoi)

    17.字符串转换整数 (atoi) 请你来实现一个 atoi 函数,使其能将字符串转换成整数. 首先,该函数会根据需要丢弃无用的开头空格字符,直到寻找到第一个非空格的字符为止. 当我们寻找到的第一个非 ...

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

    8. 字符串转换整数 (atoi) 方法一 import re import math class Solution(object): def myAtoi(self, str): "&qu ...

  9. leetcode刷题笔记08 字符串转整数 (atoi)

    题目描述 实现 atoi,将字符串转为整数. 在找到第一个非空字符之前,需要移除掉字符串中的空格字符.如果第一个非空字符是正号或负号,选取该符号,并将其与后面尽可能多的连续的数字组合起来,这部分字符即 ...

  10. [LeetCode] 8. 字符串转换整数 (atoi)

    题目链接:https://leetcode-cn.com/problems/string-to-integer-atoi/ 题目描述: 请你来实现一个 atoi 函数,使其能将字符串转换成整数. 首先 ...

随机推荐

  1. 软件平台ThinkSNS+软件系统研发日记

    NO.1: 实用开源软件安装部署是第一步, ThinkSNS+响应快速安装,易于二开基准,为大家录制了一份宝塔面板安装社交系统ThinkSNS+视频教程,点开观看视频一起吸一吸. 若无法播放,请直接打 ...

  2. python day 14: 作业:开发一个能够多用户上传文件的FTP脚本

    目录 python day 14 1. 要求 2. 自己写的程序目录 3. models模块 4. settings模块 5. tcp_server模块 6. client模块 7. 后记 pytho ...

  3. Java虚拟机如何运行Java字节码

    一.Java的class文件的内容 1.首先编写一个简单的代码 public class StringDemo { public static void main(String[] args) { S ...

  4. Pytorch 张量维度

    Tensor类的成员函数dim()可以返回张量的维度,shape属性与成员函数size()返回张量的具体维度分量,如下代码定义了一个两行三列的张量: f = torch.randn(2, 3) pri ...

  5. 企业如何避免错误决策?APS系统帮你忙

    一家企业不论什么事情都是有一定的决策者们,企业的决策者是对整个企业的兴衰成败主宰者主要责任. 战略一词它源于军事,是指为了获得有利的信息而进行的部署计划,那么现在战略合作也是被广泛的应用到商业的以及生 ...

  6. SpringBoot 传入JSON对象参数

    1.请求参数格式必须是正确的JSON. 2.在入参中使用注解@RequestBody,用于接收JSON参数,使其自动转对象 3.关于lombok在此产生的一点小坑,@Builder对@RequestB ...

  7. 如何使用Prometheus采集SAP ABAP Netweaver的应用日志数据

    Prometheus是一套开源的系统监控报警框架.它启发于Google的borgmon 监控系统,由工作在 SoundCloud 的 google 前员工在 2012 年创建,作为社区开源项目进行开发 ...

  8. selenium 滚动屏幕操作+上传文件

    执行js脚本来滚动屏幕: (x,y)x为0 纵向滚动,y为0横向滚动 负数为向上滚动 driver.execute_script('window.scrollBy(0,250)') 上传文件: 1.导 ...

  9. node.js 学习一

    Node.js 是单进程单线程应用程序,但是通过事件和回调支持并发,所以性能非常高. 与PHP 相似 都是单进程. Node.js 的每一个 API 都是异步的,并作为一个独立线程运行,使用异步函数调 ...

  10. 设置Linux 程序lib搜索目录

    设置Linux 程序lib搜索目录:export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:lib路径,例如: export LD_LIBRARY_PATH=$LD_LIBRA ...