一、替换时间
给你一个字符串 time
,格式为 hh:mm
(小时:分钟),其中某几位数字被隐藏(用 ?
表示)。
有效的时间为 00:00
到 23:59
之间的所有时间,包括 00:00
和 23:59
。
替换 time
中隐藏的数字,返回你可以得到的最晚有效时间。
# if-else
class Solution:
def maximumTime(self, time: str) -> str:
tmp=list(time)
for i,num in enumerate(tmp):
if num=='?':
if i==0:
if tmp[1]<='3'or tmp[1]=='?':
tmp[i]='2'
else:
tmp[i]='1'
elif i==1:
if tmp[0]=='2':
tmp[i]='3'
else:
tmp[i]='9'
elif i==3: tmp[i]='5'
elif i==4: tmp[i]='9'
return ''.join(tmp)
class Solution(object):
def maximumTime(self, time):
h = time[:2]
m = time[3:]
for i in range(23,-1,-1):
t='{:02}'.format(i)
if all([j==k or j=='?' for j,k in zip(h,t)]):
h=t
break
for i in range(59,-1,-1):
t='{:02}'.format(i)
if all([j==k or j=='?' for j,k in zip(m,t)]):
m=t
break
return '{}:{}'.format(h,m)
# copy
二、满足三条件之一需改变的最少字符数
class Solution:
def minCharacters(self, a: str, b: str) -> int:
ca=Counter(a)
cb=Counter(b)
na,nb=len(a),len(b)
ans=float('inf')
cnta,cntb=0,0
for i in range(25):
cnta+=ca[chr(ord('a')+i)]
cntb+=cb[chr(ord('a')+i)]
t1=na-cnta+cntb
t2=cnta+nb-cntb
ans=min(ans,t1,t2)
for i in range(26):
t3=na-ca[chr(ord('a')+i)]+nb-cb[chr(ord('a')+i)]
ans=min(t3,ans)
return ans
# 暴力枚举
三、找出第 K 大的异或坐标值
class Solution:
def kthLargestValue(self, matrix: List[List[int]], k: int) -> int:
rows,cols=len(matrix),len(matrix[0])
t=[[0 for i in range(cols)] for j in range(rows)]
t[0][0]=matrix[0][0]
for i in range(1,rows):
t[i][0]=t[i-1][0]^matrix[i][0]
for i in range(1,cols):
t[0][i]=t[0][i-1]^matrix[0][i]
for i in range(1,rows):
for j in range(1,cols):
t[i][j]=t[i-1][j]^t[i][j-1]^t[i-1][j-1]^matrix[i][j]
ans=[t[i][j] for i in range(rows) for j in range(cols)]
ans.sort(reverse=True)
return ans[k - 1]
四、放置盒子
#归纳