b978 - 7.最終任務->c.重組提示
題目描述
題目要求讀取字串和一個由 1 到字串長度組成的數字序列,並根據數字序列重新排列字串。輸入包含多組測試案例,直到 EOF 為止。
解題思路
這題的解題思路是模擬重組過程。首先讀取字串 a 和重組順序的數字序列。然後,建立一個與字串 a 長度相同的字串 b,用於儲存重組後的結果。根據數字序列中的每個數字 n,將字串 a 中對應索引的字元賦予字串 b 中索引為 n-1 的位置。最後輸出重組後的字串 b。
複雜度分析
- 時間複雜度: O(n^2),其中 n 是字串的長度。因為對於每個字串,我們需要讀取 n 個數字,並進行 n 次賦值操作。
- 空間複雜度: O(n),因為我們需要建立一個與輸入字串長度相同的字串
b來儲存重組後的結果。
程式碼
#include <iostream>
#include <string>
using namespace std;
int main(){
int n;
string a;
while(cin >> a){
string b=a;
for(int i=0,al=a.length();i<al;i++){
cin >> n;
b[n-1]=a[i];
}
cout << b << "\n";
}
}