c0445 - Error
題目描述
題目要求將多行字串以垂直方向對齊輸出,對齊方式是根據最長字串的長度,將較短字串的左側補上空格。
解題思路
程式碼讀取多行字串,找出最長字串的長度。然後,它迭代每一列,並輸出每一行字串的對應字元,如果字串長度小於當前列,則輸出空格。這個過程重複進行,直到輸出所有列。
複雜度分析
- 時間複雜度: 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";
}
}