LeetCode:8. 字符串转换整数(python3)
Posted 南岸青栀*
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了LeetCode:8. 字符串转换整数(python3)相关的知识,希望对你有一定的参考价值。
8. 字符串转换整数 (atoi)
法1:正则表达式
正好回顾一下正则表达式
import re
class Solution:
def myAtoi(self, s: str) -> int:
MAX_NUM = 2**31 - 1
MIN_NUM = -2**31
s = s.lstrip()
num_re = r'^[\\+\\-]?\\d+'
num = findall(num_re,s)
num = int(*num)
return max(min(num,MAX_NUM),MIN_NUM)
简单回顾一下正则表达式
findall函数
在字符串中找到正则表达式所匹配的所有子串,并返回一个列表,如果没有找到匹配的,
则返回空列表。语法格式如下:
findal[(pattern, string, flags=0)
参数说明
参数 | 描述 |
---|---|
pattern | 匹配的正则表达式 |
string | 要匹配的字符串 |
flags | 可选,表示匹配模式,例如:忽略大小写,多行模式等 |
边界字符
字符 | 功能 |
---|---|
^ | 匹配字符串开头 |
$ | 匹配字符串结尾 |
\\b | 匹配一个单词的边界 |
\\B | 匹配非单词的边界 |
原生字符串
正则表达式里使用“\\”作为转移字符。
Python中字符串前面加上 r 表示原生字符串
例:在输出路径的时候要使用两次反斜杠
重复数量限定符
提供了对表达式的一部分进行重复处理的功能。
正则表达式中常用的限定符
符号 | 描述 |
---|---|
* | 匹配零次或多次 |
+ | 匹配一次或多次 |
? | 匹配一次或零次 |
{m} | 重复m次 |
{m,n} | 重复m到n次 |
{m,} | 至少m次 |
常用匹配符
符号 | 描述 |
---|---|
. | 匹配任意一个字符(除了\\n) |
[] | 匹配列表中的字符串 |
\\w | 匹配字母、数字、下划线(a-z,A-Z,0-9,_) |
\\W | 匹配不是字母,数字,下划线 |
\\s | 匹配空白字符,(空格\\n\\t) |
\\S | 匹配不是空白的字符 |
\\d | 匹配数字(0-9) |
\\D | 匹配非数字的字符 |
Python *
的意义
在元组,字典,列表中使用*
lst = [1,2,3,4]
tuple1 = (1,2,3,4)
dic = {"1":"a","2":"b","3":"c"}
print(lst,"===>",*lst)
print(tuple1,"===>",*tuple1)
print(dic,"===>",*dic)
在列表前加*号,会将列表拆分成一个一个的独立元素,不光是列表、元组、字典,由numpy生成的向量也可以拆分;
*args和**kwargs
- *args:接收若干个位置参数,转换成元组tuple形式
- **kwargs:接收若干个关键字参数,转换成字典dict形式
def test(*args):
print(type(args))
for i in args:
print(i)
lst = [1,2,3,4]
test(lst)
test(*lst)
如果不加*
,add函数将整个列表当做一个元素使用,也就是add(([1,2,4,5],))。
而带有*
号的参数,此时相当于add((1, 2, 4, 5));
*
号也可以作用于二维的列表;
可迭代对象才可以使用
*
号拆分; 带*
号变量严格来说并不是一个变量,而更应该称为参数,它是不能赋值给其他变量的,但可以作为参数传递;
以上是关于LeetCode:8. 字符串转换整数(python3)的主要内容,如果未能解决你的问题,请参考以下文章
前端与算法 leetcode 8. 字符串转换整数 (atoi)