混淆点
【sorted(list)不改变list,而list.sort()改变list】
b = [2,1,5]
print(sorted(b)) #[1, 2, 5]
b #[2, 1, 5]
a = [2,1,5]
a.sort()
a #[1, 2, 5]
【input()】
input() #输入[1, 2, 5],输出 '[1, 2, 5]'
input_str=input() 【输出str】
input_list= input_str.split(',') 【输出list,里面是str类型】
input_list= [int(x) for x in input_str.split(',')] 【输出list,里面是int类型】
'builtin_function_or_method' object is unsubscriptable 【把()写成[]导致的】
20200628
list = input().split(',')
a=int(input())
list.append(a)
list = [int(i) for i in list]
sorted(list).index(a)
20200428华为的机试题:两个str的最长公共子串的长度
【永远忘不掉把,因为昨晚20200428华为的机试题,现在折腾出了答案,有点繁琐】
需要注意两点:
(1)因为有重复测试,所以需要添加
while True:
try:
(2)如何求解列表中的最长元素:max(arr,key=len)
(3)真实做题环境,至少我还是需要借助IDE来辅助循环。
while True:
try:
a=input()
b=input()
temp=''
if len(a)>=len(b):
temp=a
a=b
b=temp
arr=[]
for i in range(len(a)):
j=len(a)
while i<j and (a[i:j] not in b):
#print('__'+a[i:j])
j=j-1
#print(a[i:j])
arr.append(a[i:j])
print(max(arr,key=len))
except:
break
不错的题
1、数据表记录包含表索引和数值(int范围的整数),请对表索引相同的记录进行合并,即将相同索引的数值进行求和运算,输出按照key值升序进行输出。
【map作用于list上的用法 map(int,input().split())、有序输出for x in sorted(z.keys())的用法】
【法1】
a=input()
z={}
for i in range(int(a)):
k,v=map(int,input().split())
z[k]=z.get(k,0)+v
for x in sorted(z.keys()): # list.sort() 或者 sorted(可迭代对象)
print(x,z[x])
【法2】
a=int(input())
z={}
for i in range(a):
k,v = map(int,input().split())
if k in z.keys():
z[k]+=v
else:
z[k]=v
for x in sorted(z.keys()):
print(x,z[x])
2、输入一个int型整数,按照从右向左的阅读顺序,返回一个不含重复数字的新的整数。
【不含重复数字 转换成 输出对象 if i not in b:的处理方式】
a=input()[::-1]
b=''
for i in a:
if i not in b:
b+=i
print(int(b))
3、编写一个函数,计算字符串中含有的不同字符的个数。字符在ACSII码范围内(0~127),换行表示结束符,不算在字符里。不在范围内的不作统计。注意是不同的字符
列表list变str——‘,’.join(list);
str变列表list——input().split() 或者 list(可迭代对象,如str / input()),如list('123 ')为['1', '2', '3', ' ']
【len(set)即set有长度、list(str / input())——list会把str转化成list】
a=input()
b=len(set(list(a)))
print(b)
4、以单词为单位逆序排放。例如“I am a boy”,逆序排放后为“boy a am I”
所有单词之间用一个空格隔开
def rev(a):
a=a.split()
a.reverse()
b=''
for i in a:
b+=i+' '
print(b)
rev(input())
机试范围题
?????
def corpFlightBookings(self, bookings: List[List[int]], n: int) -> List[int]:
answer=[0 for i in range(n+1)]
for i,j,v in bookings:
answer[i-1]+=v
answer[j]-=v
res=[answer[0]]
for i in range(1,len(answer)):
res.append(res[-1]+answer[i])
res.pop()
return res
def sort(arr):
newarr=[]
i=0
while i <len(arr): #range(len(arr))
j=i
while (j+1<len(arr) and arr[j]+1==arr[j+1]):
j+=1
if i !=j:
newarr.append('{}-{}'.format(arr[i],arr[j]))
i=j+1
else:
newarr.append(str(arr[i]))
i=i+1
return ','.join(newarr) #str(newarr)[1,-1] #,'.join(newarr) #newArr.join(',')
arr=[int(x) for x in input().split(',')] #[1,2,3,5,7,9,10,12]
print(sort(arr))
def function(arr):
button=["0 ","1,.?!","2ABC","3DEF","4GHI","5JKL","6MNO","7PQRS","8TUV","9WXYZ"]
str=''
for i in range(len(arr)):
num=arr[i][0]
if len(arr[i])>len(button[int(num)]):
index=len(arr[i]) % len(button[int(num)])-1 #int(num)
else:
index=len(arr[i])-1
str+=button[int(num)][index]
return str
arr = input().split()#['22', '5555', '22', '666', '00', '88', '888', '7777', '4444', '666', '44']
function(arr)
def find(n,m):
arr=[True] * n
count=0 #数组下标
index=0 #报数记录
total=n #已退出游戏人数
while (count<n and total>1):
if arr[count]==True:
if index== m-1:
arr[count]=False
index=0
total-=1
else:
index+=1
count+=1
if count==n:
count=0
return arr.index(True)+1
find(4,3)
def split(str,delim=''):
newstr=[]
temp=''
i=0
while i<len(str):
if len(delim)>0:
index=0
while (index<len(delim) and str[i+index]==delim[index]):
index +=1
if index<len(delim):
temp+=str[i]
i+=1
else:
if len(temp)>0:
newstr.append(temp)
temp=''
i+=len(delim)
else:
newstr.append(str[i])
i=i+1
if len(temp)>0:
newstr.append(temp)
return newstr
split('adbdcdedd','d')
def candy(ratings):
arr = [1]*len(ratings)
for i in range(1,len(ratings)):
if ratings[i]>ratings[i-1]:
arr[i] = arr[i-1] +1
j=len(ratings)-2
while j>=0:
if ratings[j]>ratings[j+1] and arr[j]<=arr[j+1]:
arr[j] = arr[j+1]+1
j-=1
total=0
for i in range(len(arr)):
total+=arr[i]
return total
candy([1,2,2])
def print(ratings):
arr = [0]* len(ratings)
index=1
while max(ratings)>0:
arr[ratings.index(max(ratings))] = index
index+=1
ratings[ratings.index(max(ratings))] = 0
return arr
print([3,1,2,2,3,9])
#一次性输入长度为5,逗号‘,’分隔的数字(如:11010,00110,11111),求5福个数
input_str=input()
input_list= input_str.split(',')
#input_list= [int(x) for x in input_str.split(',')]
ret = [0,0,0,0,0]
print(input_str)
print(input_list)
for x in input_list:
print(x)
for index,y in enumerate(x): ##enumerate(可迭代)——for k,v in enumerate(map(int,input().split())): print(k,v)
print(index,y)
ret[index] = ret[index] + int(y)
print(min(ret))
def get(a,b):
suma=0
sumb=0
for i in range(len(a)):
suma+=a[i]
sumb+=b[i]
min=abs(suma-sumb)
for i in range(len(a)):
for j in range(len(b)):
temp=0
if abs((2*(b[j]-a[i]))+suma-sumb)<min:
suma=suma-a[i]+b[j]
sumb=sumb-b[j]+a[i]
temp=a[i]
a[i]=b[j]
b[j]=temp
min=abs(suma-sumb)
return a,b
get([1, 3, 5 ,49],[0,2,4,18])
网友评论