题目:

请你来实现一个 atoi 函数,使其能将字符串转换成整数。

首先,该函数会根据需要丢弃无用的开头空格字符,直到寻找到第一个非空格的字符为止。接下来的转化规则如下:

如果第一个非空字符为正或者负号时,则将该符号与之后面尽可能多的连续数字字符组合起来,形成一个有符号整数。
假如第一个非空字符是数字,则直接将其与之后连续的数字字符组合起来,形成一个整数。
该字符串在有效的整数部分之后也可能会存在多余的字符,那么这些字符可以被忽略,它们对函数不应该造成影响。
注意:假如该字符串中的第一个非空格字符不是一个有效整数字符、字符串为空或字符串仅包含空白字符时,则你的函数不需要进行转换,即无法进行有效转换。

在任何情况下,若函数不能进行有效的转换时,请返回 0 。

提示:

本题中的空白字符只包括空格字符 ' ' 。
假设我们的环境只能存储 32 位大小的有符号整数,那么其数值范围为 [−231,  231 − 1]。如果数值超过这个范围,请返回  INT_MAX (231 − 1) 或 INT_MIN (−231) 。

示例 1:

输入: "42"
输出: 42
示例 2:

输入: "   -42"
输出: -42
解释: 第一个非空白字符为 '-', 它是一个负号。
     我们尽可能将负号与后面所有连续出现的数字组合起来,最后得到 -42 。
示例 3:

输入: "4193 with words"
输出: 4193
解释: 转换截止于数字 '3' ,因为它的下一个字符不为数字。
示例 4:

输入: "words and 987"
输出: 0
解释: 第一个非空字符是 'w', 但它不是数字或正、负号。
     因此无法执行有效的转换。
示例 5:

输入: "-91283472332"
输出: -2147483648
解释: 数字 "-91283472332" 超过 32 位有符号整数范围。 
     因此返回 INT_MIN (−231) 。

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

个人思路:

就是单纯的遍历字符串,用ASC的值比较之后将形成的新字符串转为int判断下。应该就是这么简单,我不会再上上一道题的当了!

官方答案推荐:

①DFA解法:画一个状态转化图,根据当前字符不同(即状态不同)处理方式不同。虽然麻烦但有条理。

②正则表达式:提取前面的数字和正负号就完事了。

python代码:

import re
class Solution:def myAtoi(self, str: str) -> int:int_max = (1<<31) - 1int_min = -(1<<31)str = str.lstrip()pattern = re.compile(r'^[\+\-]?\d+')result = int(*pattern.findall(str))if result > int_max:result = int_maxelif result < int_min:result = int_minreturn result

反思:

真想不到还有DFA和正则的骚操作。自己满脑子都是if else。。。

Leetcode第八题:字符串转换整数相关推荐

  1. [剑指offer]面试题第[67]题[Leetcode][JAVA][第8题] 字符串转换整数 (atoi)[字符串]

    [问题描述] 请你来实现一个 atoi 函数,使其能将字符串转换成整数.首先,该函数会根据需要丢弃无用的开头空格字符,直到寻找到第一个非空格的字符为止.接下来的转化规则如下:如果第一个非空字符为正或者 ...

  2. leetcode算法题--字符串转换整数 (atoi)

    原题链接: https://leetcode-cn.com/problems/string-to-integer-atoi/ https://leetcode-cn.com/problems/ba-z ...

  3. LeetCode刷题——字符串转换整数

    目录 一.题目描述 二.题解 三.源码 一.题目描述 二.题解 三.源码 class Solution:def myAtoi(self, str) -> int:#去掉左边字符str=str.l ...

  4. LeetCode解题(1)----------8 字符串转换整数[go]

    func myAtoi(str string) int {//去除空格s := strings.TrimSpace(str)if s ==""{return 0}templ := ...

  5. 20190822:(leetcode习题)字符串转换整数 (atoi)

    字符串转换整数 题目 大致思路 代码实现 题目 大致思路 这题主要是乱,思路大家都很容易想,就是把各种情况给码出来就行了,大家见我的代码注释会比较清晰. 几个用得到的方法:trim和substring ...

  6. ⭐算法入门⭐《模拟》中等01 —— LeetCode 8. 字符串转换整数

    文章目录 一.题目 1.题目描述 2.基础框架 3.原题链接 二.解题报告 1.思路分析 2.时间复杂度 3.代码详解 三.本题小知识 四.加群须知 一.题目 1.题目描述   实现一个myAtoi( ...

  7. c++ 32位有符号的整数_【LeetCode】字符串分类字符串转换整数 (atoi)

    " 摘要:本文主要讲述LeetCode字符串分类字符串转换整数 (atoi)解法.主要内容如下: 题目 示例 解题 " 01 - 题目 请你来实现一个 atoi 函数,使其能将字符 ...

  8. [DFA|有限状态机] leetcode 8 字符串转换整数(atoi)

    [DFA|有限状态机] leetcode 8 字符串转换整数(atoi) 1.题目 题目链接 请你来实现一个 atoi 函数,使其能将字符串转换成整数. 首先,该函数会根据需要丢弃无用的开头空格字符, ...

  9. Leetcode 129求根节点到叶节点数字之和、104二叉树的最大深度、8字符串转换整数(atoi)、82删除排序链表中的重复元素II、204二分查找、94二叉树的中序遍历、144二叉树的前序遍历

    Top1:Leetcode 129求根节点到叶节点数字之和 官方题解:https://leetcode.cn/problems/sum-root-to-leaf-numbers/solution/qi ...

  10. 8. 字符串转换整数 (atoi)(leetcode力扣算法 - java / rust)

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

最新文章

  1. 使用 shell 脚本对 Linux 系统和进程资源进行监控
  2. GitHub上值得关注的iOS开源项目
  3. Git笔记(二)——[diff, reset]
  4. GVIM中文编码出现乱码的解决方案
  5. 隐藏滚动条,保留鼠标滚动效果
  6. matlab中求三维中的多个体积,用matlab计算由下面2个几何体围成的体积: x^2+y^2+z^2=36,((x-4)/5)^2+((y-1)/3)^2+((z-2)/5)^2=1...
  7. c#中struct和class的区别
  8. 沃尔沃召回部分进口及国产车 共计131591辆
  9. ES6学习(九)—Generator 函数的语法
  10. Caesar解密-number theroy
  11. 星系炸弹(2015年蓝桥杯省赛第2题)
  12. 数据分析师必须掌握的模型——AARRR漏斗模型
  13. “士兵突击”职场攻略心法
  14. 关于NB-IOT模块链接阿里物联网平台的学习笔记-记录
  15. 服务器强制关机会有什么影响,真相揭秘:强制关机对电脑硬件伤害大吗?
  16. Eclipse全局搜索 文件搜索 IDEA全局搜索 快捷键Ctrl+Shit+F冲突 Ctrl+Alt+0 全局查询
  17. Linux最常用命令50条【呕心沥血呐,望用之取之】
  18. 【精英会会长、TOS顾问黄智中:区块链将改变价值传递方式】GBCAX
  19. STM32 FLASH的擦写寿命
  20. 【前端面试】div和p标签都是块级元素,有什么区别?

热门文章

  1. C语言 7-3 输出三角形字符阵列 (15 分)本题要求编写程序,输出n行由大写字母A开始构成的三角形字符阵列。
  2. 柱纵向钢筋长度计算机械连接,柱钢筋计算公式图解
  3. 提问的智慧(smart questions)
  4. GEE学习笔记:在Google Earth Engine(GEE)中批量下载Sentinel-2影像
  5. 大型企业兴起新一轮创业浪潮
  6. Java与Python下载Bing首页图片
  7. 【JSOI2018】潜入行动
  8. [生存志] 第110节 黄石公圯上授三略
  9. 北斗导航 | 基于性能导航(PBN)涉及术语
  10. 小学计算机课画小鸡,信息技术三年级册《画小鸡》.doc