题型:选择40+简答+编程2个
编程1:字符串排序
按照字母的逆序排序
import sys
def reve(char):
addtion = ord(char)-ord('a')
return chr(ord('a')+26-addtion)
def map(word):
return ''.join(reve(char) for char in word)
if __name__ =='__main__':
words = sys.stdin.readline().strip().split(',')
print(','.join(sorted(words,key=map)))
waimai,dache,lvy,meip
waimai,meip,lvy,dache
编程2:最长公共前缀
有最大长度十万的多个字符串,任意给两个字符串编号,返回这两个字符串的最长公共前缀长度。
import sys
def getlens(slist,a,b):
lens,p=0,0
if not slist[a] or not slist[b]:
return 0
while p < len(slist[a]) and p < len(slist[b]) and slist[a][p] == slist[b][p]:
p+=1
lens+=1
return lens
n = int(sys.stdin.readline().strip())
slist = []
for _ in range(n):
slist.append(sys.stdin.readline().strip())
for line in sys.stdin:
index = list(map(int,line.strip().split()))
if index[0]>n or index[1]>n or index[0]<1 or index[1]<1:
print('')
else:
lens =getlens(slist,index[0]-1,index[1]-1)
print(str(lens))