APCS202206 第2題字串解碼

給由m個 01 字串的加密表和按照順序加密原字串後得到加密過後的字串,請嘗試還原出原本的字串。

輸入說明

第一行輸入兩個數字 m,n (1≤m,n≤100),接下來有 m個長度為 n的 01 字串,最後輸入一個長度為 n的加密字串, 字串均由大寫字母組成。

輸出說明

輸出解密後的字串。

輸入範例

1 5

10110

CABAD

3 6

111110

101101

000000

RETYWQ

輸出範例

BCAAD

QWERTY


範例測資二過程如下

e = 111110, 1出現的數量為奇數次,因此需要將字串 "QWERTY" 切半翻轉成 "RTYQWE",經過 01 字串的轉換後會得到 "EWQYTR"。

e = 101101, 1出現的數量為偶數次,因此不用翻轉字串,經過 01 字串的轉換後會得到 "RETYWQ"。

e = 000000, 1出現的數量為偶數次,因此不用翻轉字串,經過 01 字串的轉換後會得到 "RETYWQ"。

解題策略

字串串接與切割,解密由後往前,先由數值0與1還原字串,接著由1的個數決定是否前後互換,可以獲得原來字串,再進行下一個還原,直到執行m次,求出解答。

C++程式碼

Python程式碼(使用ChatGPT轉換成Python)