2018华为校招软件卷,2题ac,一题50%
第一题:
把字符串排序后紧凑地输出:
输入:
5 5 1 1 1
输出:
1 3 5 2
意思:
1有3个,5有2个
num=list(map(int, input().split(" ")) set1=set(num) new={} for i in set1: new[i]=num.count(i) dict1=sorted(new.items(),key=lambda d:d[0]) d2=[str(i) for x in dict1 for i in x] print(' '.join(d2))
第二题:
小红和小明去地铁尽头约会,在交汇点回合
小明的输入:A-B-C-H-I-K
小红:M-H-I-K
输出交汇点和后面有多少相同的:
输出:H 2
如果没有交汇:
输出:0 0
A=input().split("-") B=input().split("-") A.reverse() B.reverse() meet_station='0' toge=0 if len(A)>len(B): C=A A=B B=C for i in range(len(A)): if A[i]==B[i]: toge+=1 meet_station=A[i] print(meet_station+' '+str(toge))
第三题:
字符串穷举替换
把第二个参数换成第三个参数
所有参数对大小写不敏感,输出结果按照二进制升序排序
输入:
997 9 8
输出:
997,987,897,887
没看懂“大小写不敏感”的意思....一直都是50%
def makeAns(ListA): ans='' for i in range(len(ListA)-1): ans=ans+ListA[i] ans=ans+ListA[-1] return ans s,x,y=tuple((input().split(' '))) s=list(s) changeIndex=[] for i in range(len(s)): if s[i]==x: changeIndex.append(i) changeLen=len(changeIndex) maxInt=2**changeLen-1 ansstringList=[] for i in range(0,maxInt+1): binIndex=list(bin(i)) binIndex=binIndex[2:] binIndex.reverse() ansIndexList=[] for i in range(len(binIndex)): if binIndex[i]=='1': ansIndexList.append(changeIndex[i]) ansList=[] for i in range(len(s)): if i in ansIndexList: ansList.append(y) else: ansList.append(s[i]) ansstringList.append(makeAns(ansList)) ansstring='' for i in range(len(ansstringList)-1): ansstring=ansstring+ansstringList[i]+',' ansstring=ansstring+ansstringList[-1] print(ansstring)