# String# Array# Simulation

b978 - 7.最終任務->c.重組提示

🔗 前往 ZeroJudge 原題

題目描述

題目要求讀取字串和一個由 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";
	}
}

Discussion