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

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

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

  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. 实战Go内存泄露【转】

    最近解决了我们项目中的一个内存泄露问题,事实再次证明pprof是一个好工具,但掌握好工具的正确用法,才能发挥好工具的威力,不然就算你手里有屠龙刀,也成不了天下第一,本文就是带你用pprof定位内存泄露 ...

  2. Parameter 0 of method sqlSessionTemplate in org.mybatis.spring.boot.autoconfigure.MybatisAutoConfiguration required a single bean, but 2 were found:

    Parameter 0 of method orderSqlSessionFactory in com.config.MultipleDBConfig required a single bean, ...

  3. Golang slice和map的申明和初始化

    1 前言 仅供记录使用. 2 代码 /** * @Author: FB * @Description: * @File: SliceMapInit.go * @Version: 1.0.0 * @Da ...

  4. Typora基础

    Typora下载网址https://typora.io 一级标题 :# 空格 编写内容 二级标题 2*# 空格 内容 typora快捷键 ctrl+1 =一级标题 有序内容 1.+tab (Q旁边的t ...

  5. Java web服务端参数校验Javax.validation (springboot)

    一.基本使用 Javax.validation是spring集成自带的一个参数校验接口.可通过添加注解来设置校验条件. 下面以springboot项目为例进行说明.创建web项目后,不需要再添加其他的 ...

  6. ps 修补工具

    最近刚好遇到需要p图去除水印,这里将ps去除水印的使用记录下来已备翻阅 1.需求图片(如下),使用软件 photo shop cc 2017(以下简称ps) 2.操作 2.1方法一 使用五点修复画笔工 ...

  7. ffmpeg基础使用

    https://www.jianshu.com/p/ddafe46827b7  

  8. 使用jquery.datatable.js注意事项

    本文链接:https://blog.csdn.net/ylg01/article/details/76463908写在最前面的话,如果不是维护老项目或者在老项目上二次开发尽量不要用这个表格插件 为什么 ...

  9. IT黑马-面向对象

    先说面向过程 面向过程主要考虑的是怎么做 把完成摸个需求的 所有步骤 从头到尾 逐步实现 根据开发需求,将某些功能独立的代码封装成一个又一个的函数 最后完成的代码就是顺序的调用不同的函数. 特点是: ...

  10. yum仓库的部署

    https://segmentfault.com/a/1190000013968371 私有yum仓库在企业中的应用还是比较广泛,有方便.快捷.灵活等优势.如某公司安全部门不允许大批量的主机连接互联网 ...