leetcode-StringProblems

字符串的常规运算

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
# 将字符转为ascll码表
num = ord('a')
# 将码表再转回来
letter = chr(num)

# 求两个字符串的差值
print(ord('b')-ord('a'))

# 字符串的反转
letter='leetcode'
reverse_str = letter[::-1]

# 判断字符类型
# 如果 string 只包含数字则返回 True 否则返回 False.
letter.isdigit()
#如果 string 至少有一个字符并且所有字符都是字母或数字则返回 True,否则返回 False
letter.isalnum()
# 如果 string 至少有一个字符并且所有字符都是字母则返回 True,否则返回False
letter.isalpha()

# 将letter中的x替换为yyy,可以将空格' '替换成为''等于去除空格
letter.replace('x','yyy')
letter.strip()#去除两边所有空格
letter.lstrip()#去除左边空格
letter.lstrip()#去除右边空格

列表的常规操作

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
# 列表去重
l1 = [1,4,4,2,3,4,5,6,1]
l2 = list(set(l1))
print(l2) # [1, 2, 3, 4, 5, 6]

# 列表转化成字符串
li=['a','b','c']
print(' '.join(str(i) for i in li))

#返回num第一次在li中出现的索引
index = li.index(num)

# 将b合并到a中
a=[1,2,6,8,0,3,4]
b=[2,5,9]
a.extend(b)
a.[len(a):]=b

# 列表排序
# 一维列表
li = [1,4,4,2,3,4,5,6,1]
li.sort(key=lambda x:x)
sorted(li, key=lambda x:x )
# 倒排
li.reverse() # 直接原地倒排
li[::-1] # 返回倒排的copy

# 二维列表
li = [[1,3],[8,10],[2,6],[15,18]]
li.sort(key=lambda x:x[0])

# 构建栈和队列
li=[1,2,6,8,0,3,4]
#增加元素
li.append()#数组尾部添加
li.insert(x,3)#在索引为x的位置插入3
#删除元素
li.pop()#删除尾部元素
li.pop(0)#删除索引为0的元素

#构建栈
li=[]
li.append()
li.pop()
#构建队列
li=[]
li.append()
li.pop(0)

字典的常规操作

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
# 字典的遍历
cnt={1:4,2:3}
for key, value in cnt.items():# 遍历键值对
print(key, value)
for item in cnt.keys():# 遍历键
print(item)
for item in cnt.values():# 遍历值
print(item)

# 利用get()方法获取字典value,使用get()方法当键值不存在时不会报错,会输出None。
person = {'name': 'John', 'age': 20}
print('Name: ', person.get('name'))
print('Age: ', person.get('age'))
print('Salary: ', person.get('salary'))

# 字典排序
a = {'a': 3, 'c': 89, 'b': 0, 'd': 34}
a1 = sorted(a.items(), key=lambda x: x[1])# 按照字典的值进行排序,返回的是list格式
a2 = sorted(a.items(), key=lambda x: x[0])# 按照字典的键进行排序,返回的是list格式
dict_a1 = dict(a1) # 转为字典格式
dict_a2 = dict(a2) # 转为字典格式

# zip函数的用法
teams = ['Barcelona', 'Bayern Munich', 'Chelsea']
leagues = ['La Liga', 'Bundesliga', 'Premiere League']
countries = ['Spain', 'Germany', 'UK']
for team, league, country in zip(teams, leagues, countries):
print(f'{team} plays in {league}. Country: {country}')

# 求矩阵的列
# 此时是将每一列作为可迭代对象,直接将列导出
grid = ['123','456','789']
grid = [[1,2,3], [4,5,6], [7,8,9]]
for col in zip(*grid):
print(col)
"""
('1', '4', '7')
('2', '5', '8')
('3', '6', '9')
"""

map/reduce 函数的常规操作

1
2
3
4
5
6
# map(function, iterable, …) 返回迭代器对象
nums = [1, 2, 3, 4, 5]
res = list(map(lambda x: x**2, nums)) # 使用 lambda 匿名函数

# reduce函数

collections 函数的常规操作

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
# deque是双端队列(double-ended queue)的缩写,由于两端都能编辑,deque既可以用来实现栈(stack)也可以用来实现队列(queue)。
from collections import deque
# que = collections.deque()
a=deque([1,2,3])
a.pop()
# [1,2]
a.append(4)
# [1,2,4]
a.popleft()
# [2,4]
a.appendleft(0)
# [0,2,4]

# counter 计数
from collections import Counter
colors = ['red', 'blue', 'red', 'green', 'blue', 'blue']
res = Counter(colors)
res_dic = dict(res)

# collections.OrderedDict有序字典
from collections import OrderedDict
mydict=OrderedDict({'a':2,'b':1,'c':0})
for key,value in mydict.items():
print(key,value)
[up主专用,视频内嵌代码贴在这]