天天看點

Python描述 第十一屆藍橋杯省賽第一場 試題 I: 字元串編碼

第十一屆藍橋杯省賽 第一場試題 I: 字元串編碼

  大家好,我叫亓官劼(qí guān jié )
Python描述 第十一屆藍橋杯省賽第一場 試題 I: 字元串編碼

試題 I: 字元串編碼

時間限制: 1.0s 記憶體限制: 512.0MB 本題總分:25 分

【問題描述】

小明發明了一種給由全大寫字母組成的字元串編碼的方法。對于每一個大

寫字母,小明将它轉換成它在 26 個英文字母中序号,即 A → 1, B → 2, … Z →

26。

這樣一個字元串就能被轉化成一個數字序列:

比如 ABCXYZ → 123242526。

現在給定一個轉換後的數字序列,小明想還原出原本的字元串。當然這樣

的還原有可能存在多個符合條件的字元串。小明希望找出其中字典序最大的字

符串。

【輸入格式】

一個數字序列。

【輸出格式】

一個隻包含大寫字母的字元串,代表答案

【樣例輸入】

123242526

【樣例輸出】

LCXYZ

【評測用例規模與約定】

對于 20% 的評測用例,輸入的長度不超過 20。

Python解法

a = input()
len = a.__len__()
# 末尾加個字元,但是len還是之前的len,這樣可以防止處理之後越界
a = a + 'Z'
i = 0
re = ""
while( i < len):
    temp = int(a[i]) * 10 + int(a[i+1])
    # 連續兩個無法連續
    if(temp > 26):
        re = re + chr(int(a[i]) + 65 -1)
        i = i + 1
    else:
        re = re + chr(temp + 65 -1)
        i = i + 2
print(re)