1. 程式人生 > 其它 >第十二屆藍橋杯軟體類模擬賽python程式設計 第二期(5)字母間距

第十二屆藍橋杯軟體類模擬賽python程式設計 第二期(5)字母間距

技術標籤:python藍橋杯模擬列表字串python演算法藍橋杯

如有錯誤歡迎指正
如有更好的解法歡迎分享

Topic

兩個字母之間的距離定義為它們在字母表中位置的距離。
例如 A 和 C 的距離為 2,L 和 Q 的距離為 5。
對於一個字串,我們稱字串中兩兩字元之間的距離之和為字串的內部距離。
例如:ZOO 的內部距離為 22,其中 Z 和 O 的距離為 11。
請問,LANQIAO 的內部距離是多少?

Solution

可以利用列表的索引進行求解
舉例:

在這裡把A看作索引值0,C看作索引值2
相減即為結果2

首先將A到Z按順序放在列表當中

這裡為了減少程式碼量就先表示為了字串

再轉換為的列表利用索引

之後對LANQIAO進行同樣操作設定為列表b
將b中字母在A中尋找索引值
同時減去b中上一個字母的索引值
兩值相減加入到結果res中

直至完全遍歷完b中的字母
輸出res即可完成本題

Code

a = list('ABCDEFGHIJKLMNOPQRSTUVWXYZ')
ans = 0
b = list('LANQIAO')

for i in range(1, len(b)):
    a_1 = a.index(b[i])
    a_2 = b.index(b[i - 1])
    ans += a_1 - a_2

print(ans)

Answer

40