【LeetCode08】字符串转换整数

时间:2022-06-25
本文章向大家介绍【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)的罕有金属之合金所制成,马龙麦克连恩博士因意外而制作出了以奈布林为主原料的合金,然而因为其制造过程属意外,所以其原料比例和合金过程全都失传了。它有着吸收能量的功能,而且是“惊奇”宇宙最硬的材质之一。长年的训练令他能够人盾合一,可以百发百中地掷出盾牌,无论是狙击、反弹敌人攻击、跳弹式攻击、连续打击多个目标、或是飞掷转向至敌人背后攻击都完全不是问题。他遵循“不杀人”的原则,在二战后都没有使用过枪类等致命武器,除非是迫于自卫。