Leetcode第八题:字符串转换整数
题目:
请你来实现一个 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第八题:字符串转换整数相关推荐
- [剑指offer]面试题第[67]题[Leetcode][JAVA][第8题] 字符串转换整数 (atoi)[字符串]
[问题描述] 请你来实现一个 atoi 函数,使其能将字符串转换成整数.首先,该函数会根据需要丢弃无用的开头空格字符,直到寻找到第一个非空格的字符为止.接下来的转化规则如下:如果第一个非空字符为正或者 ...
- leetcode算法题--字符串转换整数 (atoi)
原题链接: https://leetcode-cn.com/problems/string-to-integer-atoi/ https://leetcode-cn.com/problems/ba-z ...
- LeetCode刷题——字符串转换整数
目录 一.题目描述 二.题解 三.源码 一.题目描述 二.题解 三.源码 class Solution:def myAtoi(self, str) -> int:#去掉左边字符str=str.l ...
- LeetCode解题(1)----------8 字符串转换整数[go]
func myAtoi(str string) int {//去除空格s := strings.TrimSpace(str)if s ==""{return 0}templ := ...
- 20190822:(leetcode习题)字符串转换整数 (atoi)
字符串转换整数 题目 大致思路 代码实现 题目 大致思路 这题主要是乱,思路大家都很容易想,就是把各种情况给码出来就行了,大家见我的代码注释会比较清晰. 几个用得到的方法:trim和substring ...
- ⭐算法入门⭐《模拟》中等01 —— LeetCode 8. 字符串转换整数
文章目录 一.题目 1.题目描述 2.基础框架 3.原题链接 二.解题报告 1.思路分析 2.时间复杂度 3.代码详解 三.本题小知识 四.加群须知 一.题目 1.题目描述 实现一个myAtoi( ...
- c++ 32位有符号的整数_【LeetCode】字符串分类字符串转换整数 (atoi)
" 摘要:本文主要讲述LeetCode字符串分类字符串转换整数 (atoi)解法.主要内容如下: 题目 示例 解题 " 01 - 题目 请你来实现一个 atoi 函数,使其能将字符 ...
- [DFA|有限状态机] leetcode 8 字符串转换整数(atoi)
[DFA|有限状态机] leetcode 8 字符串转换整数(atoi) 1.题目 题目链接 请你来实现一个 atoi 函数,使其能将字符串转换成整数. 首先,该函数会根据需要丢弃无用的开头空格字符, ...
- Leetcode 129求根节点到叶节点数字之和、104二叉树的最大深度、8字符串转换整数(atoi)、82删除排序链表中的重复元素II、204二分查找、94二叉树的中序遍历、144二叉树的前序遍历
Top1:Leetcode 129求根节点到叶节点数字之和 官方题解:https://leetcode.cn/problems/sum-root-to-leaf-numbers/solution/qi ...
- 8. 字符串转换整数 (atoi)(leetcode力扣算法 - java / rust)
8. 字符串转换整数 (atoi): 请你来实现一个 myAtoi(string s) 函数,使其能将字符串转换成一个 32 位有符号整数(类似 C/C++ 中的 atoi 函数). 函数 myAto ...
最新文章
- 使用 shell 脚本对 Linux 系统和进程资源进行监控
- GitHub上值得关注的iOS开源项目
- Git笔记(二)——[diff, reset]
- GVIM中文编码出现乱码的解决方案
- 隐藏滚动条,保留鼠标滚动效果
- matlab中求三维中的多个体积,用matlab计算由下面2个几何体围成的体积: x^2+y^2+z^2=36,((x-4)/5)^2+((y-1)/3)^2+((z-2)/5)^2=1...
- c#中struct和class的区别
- 沃尔沃召回部分进口及国产车 共计131591辆
- ES6学习(九)—Generator 函数的语法
- Caesar解密-number theroy
- 星系炸弹(2015年蓝桥杯省赛第2题)
- 数据分析师必须掌握的模型——AARRR漏斗模型
- “士兵突击”职场攻略心法
- 关于NB-IOT模块链接阿里物联网平台的学习笔记-记录
- 服务器强制关机会有什么影响,真相揭秘:强制关机对电脑硬件伤害大吗?
- Eclipse全局搜索 文件搜索 IDEA全局搜索 快捷键Ctrl+Shit+F冲突 Ctrl+Alt+0 全局查询
- Linux最常用命令50条【呕心沥血呐,望用之取之】
- 【精英会会长、TOS顾问黄智中:区块链将改变价值传递方式】GBCAX
- STM32 FLASH的擦写寿命
- 【前端面试】div和p标签都是块级元素,有什么区别?
热门文章
- C语言 7-3 输出三角形字符阵列 (15 分)本题要求编写程序,输出n行由大写字母A开始构成的三角形字符阵列。
- 柱纵向钢筋长度计算机械连接,柱钢筋计算公式图解
- 提问的智慧(smart questions)
- GEE学习笔记:在Google Earth Engine(GEE)中批量下载Sentinel-2影像
- 大型企业兴起新一轮创业浪潮
- Java与Python下载Bing首页图片
- 【JSOI2018】潜入行动
- [生存志] 第110节 黄石公圯上授三略
- 北斗导航 | 基于性能导航(PBN)涉及术语
- 小学计算机课画小鸡,信息技术三年级册《画小鸡》.doc