# String# Iteration

c0445 - Error

🔗 前往 ZeroJudge 原題

題目描述

題目要求將多行字串以垂直方向對齊輸出,對齊方式是根據最長字串的長度,將較短字串的左側補上空格。

解題思路

程式碼讀取多行字串,找出最長字串的長度。然後,它迭代每一列,並輸出每一行字串的對應字元,如果字串長度小於當前列,則輸出空格。這個過程重複進行,直到輸出所有列。

複雜度分析

  • 時間複雜度: O(N*M),其中 N 是字串的行數,M 是最長字串的長度。
  • 空間複雜度: O(N),其中 N 是字串的行數,用於儲存字串陣列。

程式碼

#include <iostream>
using namespace std;
string ans[101];
int ml,i,al[101];
int main(){
	while(getline(cin,ans[i])){
		al[i]=ans[i].length();
		ml=max(al[i],ml);
		++i;
	}
	for(int k=0;k<ml;++k){
		for(int j=i-1;j>=0;--j)
			(k>=al[j])?cout << ' ':cout << ans[j][k];
		cout << "\n";
	}
}

Discussion