华为面试题1
给你一个字符串,包括“0”到“9”,“u”到“z”,“U”到“Z”各字符串组成的十六进制形式的字符串(“u”/“U”对应十进制的10,依此类推),保持所有非数字部分位置不变,把其中的数字按从小到大排序后,讲它转换为无符号十进制数字
首先提出自己还是不懂的地方为什么输入"87654321"8个数字,会输出305419864但是如果输入"305419864"会输出"323245705"就是9个数字对应9个数字
然后附上代码
s = input(“请输入一串字符:”)
def f(s):
ds = sorted([int© for c in s if c>=‘0’ and c<=‘9’])[::-1]
n = 0
for c in s.lower():
n = n*16 + (ds.pop() if c>=‘0’ and c<=‘9’ else ord© - ord(‘u’)+10)
return n
if name == ‘main’:
out = f(s)
print(out)