Contents
Problem
Solution
將在每個位置轉換的過程記錄下來,會形成一個循環,且回到一開始的位置。(因為其 key 為 1~n )order[i][0]
為第 i 個字元一開始的位置,order[i][k+1]
為在第 k 次轉換後的位置, order[i][0]
拿來存循環的週期。
接著只要將原先的字元存進對應的結果即可:
m = k%order[i][0];//週期
ans[order[i][m + 1]] = str[i - 1];
注意 index 的處理。
Code
1 |
|