【LeetCode08】字符串转换整数
请你来实现一个 atoi 函数,使其能将字符串转换成整数。 首先,该函数会根据需要丢弃无用的开头空格字符,直到寻找到第一个非空格的字符为止。 当我们寻找到的第一个非空字符为正或者负号时,则将该符号与之后面尽可能多的连续数字组合起来,作为该整数的正负号;假如第一个非空字符是数字,则直接将其与之后连续的数字字符组合起来,形成整数。 该字符串除了有效的整数部分之后也可能会存在多余的字符,这些字符可以被忽略,它们对于函数不应该造成影响。 注意:假如该字符串中的第一个非空格字符不是一个有效整数字符、字符串为空或字符串仅包含空白字符时,则你的函数不需要进行转换。 在任何情况下,若函数不能进行有效的转换时,请返回 0。
说明:
假设我们的环境只能存储 32 位大小的有符号整数,那么其数值范围为 [−231, 231 − 1]。如果数值超过这个范围,qing返回 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) 。
先思考一下,后面我会给出一个解题思路~?
图来自网络
一般的解题思路如下:
1 )删除掉字符串的空格,这里用到了lstrip()方法,截掉字符串左边的空格或指定字符
2 )使用正则表达式 re,找出数字的部分
^:匹配字符串开头
[ + -]:代表一个+字符或-字符
?:前面一个字符可有可无
d:一个数字
+:前面一个字符的一个或多个
*:前面一个字符的0个或多个
3 )用 min 和 max 来控制上下界,不要超出了规定。
Python实现:
def myAtoi(s):
return max(min(int(*re.findall('^[+-]?d+', s.lstrip())), 2**31 - 1), -2**31)
? 配图角色背景介绍
美国队长本没有超能力,是个瘦弱的年轻人,借由超人士兵血清刺激其人体潜能,使之转化为“完美”的姿态。因此美国队长具有高度的智能、常人远所不及的力量、敏捷、敏锐度、体格,他能够在没有任何辅助的状态下挺举1100磅(500kg)的重量。血清也强化了他的新陈代谢机能,能够将肌肉中的乳酸等有造成疲劳的物质完全代谢掉,这赐给了他正常人完全无法想像的耐久力,如在不到一分钟的时间内跑完1英里(每秒26.6米)等。也正是因此,使他能够以假死状态被冰封了数十年后复生。 美国队长的体细胞对酒精免疫,不可能喝醉,对于绝大多数的疾病也拥有免疫力。“Streets of Poison”这集故事中,确认了罗杰斯的肉体会规律性自动分泌超人士兵血清。精神方面,罗杰斯丰富的战斗经验将他训练成了一个高明的战术家,以及优秀的战场指挥官,队友们在战斗中往往都会服从他的指挥。罗杰斯的反射神经与感觉器官都十分的敏锐,这使得他能够毫无阻碍的习得各种武艺(拳击、柔术、合气道、柔道),并靠着他超人的运动能力,在实战中视战术需要随意组合成为一种高度洗练的战斗风格。 在混战中他最能够发挥实力,就算是有时遇上远比他强大许多的敌人,依然能够将之击败。就算是在“惊奇漫画”的世界中,他也始终被公认是宇宙中众多超级英雄里最强的近身战高手。此外他曾多次持有托尔的雷神之锤,证明了他拥有着高洁的品格。 也由于罗杰斯的对美军无比熟悉,因此他能够对美国国防部高度机密的作战方案给予详细的建议。身为世界上最有名的超级英雄的一员,也使得他能够在广泛的社交活动中进行间谍工作,也与神盾(S.H.I.E.L.D.)保持着连系。另外他在广告艺术、画漫画、教育(高中历史)、执法机关等方面也都有相当成就。 队长的唯一武器是一个画有星形的盾牌。这盾牌是由被称为“泛合金”(Vibranium)的罕有金属之合金所制成,马龙麦克连恩博士因意外而制作出了以奈布林为主原料的合金,然而因为其制造过程属意外,所以其原料比例和合金过程全都失传了。它有着吸收能量的功能,而且是“惊奇”宇宙最硬的材质之一。长年的训练令他能够人盾合一,可以百发百中地掷出盾牌,无论是狙击、反弹敌人攻击、跳弹式攻击、连续打击多个目标、或是飞掷转向至敌人背后攻击都完全不是问题。他遵循“不杀人”的原则,在二战后都没有使用过枪类等致命武器,除非是迫于自卫。
- Javascript:模仿淘宝的信用评价
- 好米有好价! 两枚4字母域名均以五位数交易
- Docker容器学习梳理--Volume数据卷使用
- 菜单常用:复位全部并设置某个项的样式
- Mysql更换MyISAM存储引擎为Innodb的操作记录
- 比特币分叉倒计时,糖果福利又来了
- 执行git push出现"Everything up-to-date"
- linux下EOF写法梳理
- 用AngularJS来实现异步数据的购物车功能设计
- span不如div的地方
- 分布式监控系统Zabbix--完整安装记录(7)-使用percona监控MySQL
- 10x Python开发者必读:本月Python文章TOP 10
- Linux下更换默认yum源为网易yum源的操作记录
- yum源使用的几个报错小总结
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法