leetcode常用数据处理

字符串处理

x = ''.join(sorted(list(i)))#转换相同的

i.lower() for i in a
string.count('a') #返回str在string里面出现的次数
''.join(s)
s=list(s) #数组和list转换

变成list、 s[end], s[start] = s[start],s[end]#互换

#排序
sorted(logs, key = f)#参考937. 重新排列日志文件  key=(0, rest, id_)分为多个优先级
sorted(words, key=lambda x: list(map(order.index, x))) #排序key

'1'.isdigit() #数字 #判断类型
'1'.isalpha()
str.isdigit(ch):
    
a=[]  a.append('a')  
 #字符串连接
''.join(i for i in a)
a='' a+='4'

[i.count(min(i)) for i in queries] #计算
''.join(i for i in s)  

s.find(' ')  #找字符
s.index('c') #返回第一个位置
str=str.replace('a', 'e')#改变值,去掉符号等,不支持部分切片转换
string.count('a')  ##返回str在string里面出现的次数

''.join(reversed(res)) #字符串连接#常用
 for  i in s: #字典
    dict[i]+=1
    
[::-1]#反转
num1[-i]#字符从后往前
res[:-1]:去掉最后一个

字符串不能赋值,但是可以定位S[0]
字符串数组用sorted
str.strip()#去掉空格
sum(nums[i:i+k]) #数组计算总和用
 #{字符:顺序}Enumerate
order = {v: i for i, v in enumerate(arr2)}
Range从大到小-range(len(A),1,-1):

###### ***\*Counter\****
from collections import Counter
c = Counter('abcasd')#字典
 A ==B: #字符串相等
   
path.split('/')#要分隔  
log.split(" ", 1) #分成两个。如果存在参数num,则仅分隔成num+1 个子字符串 #split

str=str.upper() #转换成大写
str=str.lower() #转换成小写
islower()  /isupper() #判断是否是大小写
ord #转 换

s[3:9]:9超出也可以


ord(num[0])-ord('a')


order = "hlabcdefgijkmnopqrstuvwxyz"
{c:i for i, c in enumerate(order)}


数组


[1, 9]=list(map(int, ['1', '9']))#字符串转化成整数:
nums.index(mmax) #数组索引
nums.index('2')  #数字在数组中的位置
nums[nums.index(num[0])] = "Gold Medal" 
[0 for _ in range(len(s) + 1)]

迭代

#### ***\*Zip:每个的第一个组合\****
for i, word in enumerate(zip(*strs)):

for i, j in enumerate(nums):  #数组的序号和值

import itertools
list(itertools.combinations(range(1,n+1),k)) #77leetcode组合
for i in range(len(num1)-1,-1,-1): #for循环要再加-1表示倒退

位操作

x >> y # 返回 x 向右移 y 位得到的结果
x << y # 返回 x 向左移 y 位得到的结果

X>>2除以4 x>>1:除以2

字符串转化成数字:ord('0')

ascii码

a-z:97-122
A-Z:65-90
0-9:48-57

#比较
char >='0' and char <='9':
ord('a')>=48#返回对应的 ASCII 数值
chr(97)  #ASCII 数值转化成字符
# 节省查找时间,避免无休止使用ord函数来得到数字
lookup = {"0":0,"1":1,"2":2,"3":3,"4":4,"5":5,"6":6,"7":7,"8":8,"9":9}
​

杂2

 if isinstance(item, list): #判断数据类型:
#最大最小
minindex=float("-inf")

x=str(x)#整数转为字符串
int(x) 

return在不带参数的情况下(或者没有写return语句),默认返回None。
math.factorial(n) :n!
for i in reversed(range(n)): #倒过来
0x7fffffff,这个数的确是32-bit int的最大值

intervals=sorted(intervals,key=lambda x :x[0])
n%2==1: #单数 n&1

max(self.longestSubstring(t, k) for t in s.split(c))  #获取更大值

 杂



extend 和 append 看起来类似,但实际上完全不同。extend 接受一个参数,这个参数总是一个 list  
重点:记住位置,位置相减的最小值,循环计算和所有又C的位置不知道哪个近
self是用于class下面的方法
除法要注意除以0无限循环

#### 小技巧
while(not all(x == nums[0] for x in nums)):  #所有元素相等
sum(nums[:i]) ==sum(num[i+1:]) #不包括nums[i]
 heigh = int(c**0.5) #开平方
输出null:return None  和return 不写任何东西相同
#### map
map(square, [1,2,3,4,5])   # 计算列表各个元素的平方 
map(lambda x: x ** 2, [1, 2, 3, 4, 5])
map(lambda x, y: x + y, [1, 3, 5, 7, 9], [2, 4, 6, 8, 10]) 



#### ***\*交集\*******\*intersection\****
set(nums1).intersection(set(nums2))
nums.remove(nums[i])

发布了156 篇原创文章 · 获赞 28 · 访问量 3万+

猜你喜欢

转载自blog.csdn.net/serenysdfg/article/details/104584338
今日推荐