专栏首页SAMshare【LeetCode08】字符串转换整数

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

本文分享自微信公众号 - SAMshare(gh_8528ce7b7e80),作者:Samshare

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2019-07-02

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 带你了解关系网络在反欺诈领域的常见应用

    近年来搞金融诈骗的越来越厉害啦,除了团伙化、组织化的趋势,有的居然每个月还有固定的推广费呢。那么,如何从数据的角度去鉴别诈骗团伙呢?以下这篇文章,介绍了如何利用...

    Sam Gor
  • 特征锦囊:怎么定义一个方法去填充分类变量的空值?

    之前我们说过如何删除掉缺失的行,但是如何我们需要的是填充呢?比如说用众数来填充缺失,或者用某个特定值来填充缺失值?这个也是我们需要掌握的特征工程的方法之一,对于...

    Sam Gor
  • 特征工程系列:时间特征构造以及时间序列特征构造

    数据和特征决定了机器学习的上限,而模型和算法只是逼近这个上限而已。由此可见,特征工程在机器学习中占有相当重要的地位。在实际应用当中,可以说特征工程是机器学习成功...

    Sam Gor
  • 剑指Offer面试题:30.第一个只出现一次的字符

      最直观的想法是从头开始扫描这个字符串中的每个字符。当访问到某字符时拿这个字符和后面的每个字符相比较,如果在后面没有发现重复的字符,则该字符就是只出现一次的字...

    Edison Zhou
  • Java IO学习笔记总结

    爱撒谎的男孩
  • tkinter -- Text (2)

    结果是文本的颜色不是按照 insert 给定的顺序来设置,而是按照 tag 的创建顺序来设置的

    py3study
  • 字符型常量和字符串常量的区别?

    1. 形式上: 字符常量是单引号引起的一个字符;字符串常量是双引号引起的 0 个或若干个字符。

    黑洞代码
  • 使用Python爬取社交网络数据分析

    数据抓取 一、直接抓取数据 二、模拟浏览器抓取数据 三、基于API接口抓取数据 数据预处理 可视化 数据分析 扩散深度 扩散速度 空间分布 节点属性 网络属性...

    机器学习AI算法工程
  • python3 三种字符串(无前缀,前缀

    首先要明确,虽然有三种前缀(无前缀,前缀u,前缀b),但是字符串的类型只有两种(str,bytes),实验如下:

    py3study
  • iOS中的正则表达式,一篇就够了

    rectinajh

扫码关注云+社区

领取腾讯云代金券