0
点赞
收藏
分享

微信扫一扫

【Dream的刷题乐园⚡】❤️LeetCode每日游园系列❤️——8. 字符串转换整数 (atoi)


【Dream的刷题乐园⚡】❤️LeetCode每日游园系列❤️——8. 字符串转换整数 (atoi)_空白符


????????????????????????
????Hello,大家好我是Dream,欢迎大家来到刷题乐园????????????

????​​游园须知:这片乐园从不缺乏天才,努力才是你的最终入场券!????????????​

????​​导游主要使用Python语言,同时欢迎其他语言的小伙伴进来玩耍​​☀️☀️☀️
????​​游园过程中,如果发现有错误的话,欢迎大家评论区及时斧正❤️❤️❤️​

????​​最后,祝大家游园愉快,一起加油进步????????????​



????????????游园路线图:

  • ​​????乐园描述​​
  • ​​????游园准备​​
  • ​​????开始游玩​​
  • ​​????游玩总结​​
  • ​​????????????最后的福利​​


????乐园描述

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

函数 myAtoi(string s) 的算法如下:

1.​ 读入字符串并丢弃无用的前导空格

2.​ 检查下一个字符(假设还未到字符末尾)为正还是负号,读取该字符(如果有)。 确定最终结果是负数还是正数。 如果两者都不存在,则假定结果为正。

3.​ 读入下一个字符,直到到达下一个非数字字符或到达输入的结尾。字符串的其余部分将被忽略。

4.​ 将前面步骤读入的这些数字转换为整数(即,“123” -> 123, “0032” -> 32)。如果没有读入数字,则整数为 0 。必要时更改符号(从步骤 2 开始)。

5.​ 如果整数数超过 32 位有符号整数范围 [−231, 231 − 1] ,需要截断这个整数,使其保持在这个范围内。具体来说,小于 −231 的整数应该被固定为 −231 ,大于 231 − 1 的整数应该被固定为 231 − 1 。

返回整数作为最终结果。

注意:

本题中的空白字符只包括空格字符 ’ ’ 。

除前导空格或数字后的其余字符串外,请勿忽略 任何其他字符。

示例 1

输入:s = "42"
输出:42
解释:加粗的字符串为已经读入的字符,插入符号是当前读取的字符。
1 步:"42"(当前没有读入字符,因为没有前导空格)
^
2 步:"42"(当前没有读入字符,因为这里不存在 '-' 或者 '+'
^
3 步:"42"(读入 "42"
^
解析得到整数 42
由于 "42" 在范围 [-231, 231 - 1] 内,最终结果为 42
示例 2

输入:s = " -42"
输出:-42
解释:
1 步:" -42"(读入前导空格,但忽视掉)
^
2 步:" -42"(读入 '-' 字符,所以结果应该是负数)
^
3 步:" -42"(读入 "42"
^
解析得到整数 -42
由于 "-42" 在范围 [-231, 231 - 1] 内,最终结果为 -42
示例 3

输入:s = "4193 with words"
输出:4193
解释:
1 步:"4193 with words"(当前没有读入字符,因为没有前导空格)
^
2 步:"4193 with words"(当前没有读入字符,因为这里不存在 '-' 或者 '+'
^
3 步:"4193 with words"(读入 "4193";由于下一个字符不是一个数字,所以读入停止)
^
解析得到整数 4193
由于 "4193" 在范围 [-231, 231 - 1] 内,最终结果为 4193
示例 4

输入:s = "words and 987"
输出:0
解释:
1 步:"words and 987"(当前没有读入字符,因为没有前导空格)
^
2 步:"words and 987"(当前没有读入字符,因为这里不存在 '-' 或者 '+'
^
3 步:"words and 987"(由于当前字符 'w' 不是一个数字,所以读入停止)
^
解析得到整数 0 ,因为没有读入任何数字。
由于 0 在范围 [-231, 231 - 1] 内,最终结果为 0
示例 5

输入:s = "-91283472332"
输出:-2147483648
解释:
1 步:"-91283472332"(当前没有读入字符,因为没有前导空格)
^
2 步:"-91283472332"(读入 '-' 字符,所以结果应该是负数)
^
3 步:"-91283472332"(读入 "91283472332"
^
解析得到整数 -91283472332
由于 -91283472332 小于范围 [-231, 231 - 1] 的下界,最终结果被截断为 -231 = -2147483648

提示:

0 <= s.length <= 200

s 由英文字母(大写和小写)、数字(0-9)、’ ‘、’+’、’-’ 和 ‘.’ 组成

=

????游园准备

坦白说,一道没什么意义的题…

说实话,真的没意思…

继续吧…

????开始游玩

这里用到了Python中的lstrip()函数:

Python中有三个去除头尾字符、空白符的函数,它们依次为:

strip:​ 用来去除​​头尾​​字符、空白符(包括\n、\r、\t、’ ‘,即:换行、回车、制表符、空格)

lstrip​:用来去除​​开头​​字符、空白符(包括\n、\r、\t、’ ‘,即:换行、回车、制表符、空格)

rstrip:​ 用来去除​​结尾​​字符、空白符(包括\n、\r、\t、’ ',即:换行、回车、制表符、空格)

注意:这些函数都只会删除头和尾的字符,中间的不会删除。

还用到了isdigit()函数:

s为字符串

s.isalnum()​ 所有字符都是数字或者字母

s.isalpha()​ 所有字符都是字母

s.isdigit()​ 所有字符都是数字

s.islower()​ 所有字符都是小写

s.isupper()​ 所有字符都是大写

s.istitle()​ 所有单词都是首字母大写,像标题

s.isspace()​ 所有字符都是空白字符、\t、\n、\r

如果是数字就加入字符串ret中,如果出现字母就break退出

源码如下:

# -*-coding:utf-8 -*-
# @Author:到点了,心疼徐哥哥
# 奥利给干!!!
def myAtoi(s) :
negative = None
ret = ''
new_s = s.lstrip()#lstrip:用来去除开头字符、空白符(包括\n、\r、\t、' ',即:换行、回车、制表符、空格)
if not new_s:
return 0
if new_s[0] == '-':
negative = True
new_s = new_s[1:]
for i in new_s:
if negative is \
None and i == '+':
negative = False
elif i.isdigit():#所有字符都是数字;
ret += i
else:
break
if not ret:
return 0
ret = int(ret)
if negative:
ret = -ret
return max(ret, -2 ** 31)
return min(2 ** 31 - 1, ret)
print(myAtoi( '-865dd55'))

【Dream的刷题乐园⚡】❤️LeetCode每日游园系列❤️——8. 字符串转换整数 (atoi)_空白符_02

????游玩总结

The stage extends as far as the heart goes~加油!❤️❤️❤️


​**????今天是我打卡的第十六天,希望每天都能见到最棒的你????**​


????????????最后的福利

????????????最后一点小福利带给大家:如果想快速上手python的小伙伴们,这个详细整理PPT可以迅速帮助大家打牢python基础,需要的小伙伴们可以下载一下 ​​​Python入门基础教程全套+小白速成+学不会来找我!​​​ ????????????

还有自制​表白神器​,需要自取:

​​Python表白神器,源码+解析+各种完美配置+浪漫新颖​​​ ????????????

???????????? 好啦,这就是今天要分享给大家的全部内容了

❤️❤️❤️如果你喜欢的话,就不要吝惜你的一键三连了~【Dream的刷题乐园⚡】❤️LeetCode每日游园系列❤️——8. 字符串转换整数 (atoi)_python_03



举报

相关推荐

0 条评论