while true:
try:
dic = ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "a", "b", "c", "d", "e", "f"]
s = input().replace(" ", "") #s是輸入的合併後的字串
ss = "" #ss為最終返回的字串
odd, even = "", "" # 字串的奇數子串和偶數子串
# 經過下面的迴圈,提取奇數與偶數的子串。
for i, v in enumerate(s):
if i % 2 == 0:
even += v
else:
odd += v
# 奇數與偶數部分排序
odd = "".join(sorted(odd))
even = "".join(sorted(even))
# 如果字串在0123456789abcdefabcdef範圍內,對其做變換,否則不做任何處理。
for i in range(len(even)):
if even[i] in "0123456789abcdefabcdef":
ss += dic[int(bin(dic.index(even[i].upper())).replace("0b", "").rjust(4, "0")[::-1], 2)]
else:
ss += even[i]
if len(odd) != i: #注意偶數串可能比奇數串長乙個字元,所以要做一下判斷。
if odd[i] in "0123456789abcdefabcdef":
ss += dic[int(bin(dic.index(odd[i].upper())).replace("0b", "").rjust(4, "0")[::-1], 2)]
else:
ss += odd[i]
print(ss)
except:
break
華為OJ(字串合併處理)
描述 按照指定規則對輸入的字串進行處理。詳細描述 將輸入的兩個字串合併。對合併後的字串進行排序,要求為 下標為奇數的字元和下標為偶數的字元分別從小到大排序。這裡的下標意思是字元在字串中的位置。對排訓後的字串進行操作,如果字元為 0 9 或者 a f 或者 a f 則對他們所代表的16進製制的數進行b...
華為OJ 字串合併處理
字串合併處理 按照指定規則對輸入的字串進行處理。詳細描述 將輸入的兩個字串合併。對合併後的字串進行排序,要求為 下標為奇數的字元和下標為偶數的字元分別從小到大排序。這裡的下標意思是字元在字串中的位置。對排訓後的字串進行操作,如果字元為 0 9 或者 a f 或者 a f 則對他們所代表的 16進製制...
華為 OJ 字串合併處理
按照指定規則對輸入的字串進行處理。詳細描述 將輸入的兩個字串合併。對合併後的字串進行排序,要求為 下標為奇數的字元和下標為偶數的字元分別從小到大排序。這裡的下標意思是字元在字串中的位置。對排訓後的字串進行操作,如果字元為 0 9 或者 a f 或者 a f 則對他們所代表的16進製制的數進行bit倒...