開啟章節選單

490 Rotating Sentences

題目連結

題目敘述

在「旋轉句子(Rotating Sentences)」這題中,你需要將一系列輸入的句子順時針旋轉 90 度。
也就是說,原本從左到右、從上到下輸出的句子,會改成從上到下、從右到左顯示。

輸入說明

你的程式將會接收到最多 100 句輸入句子,每一句最長不超過 100 個字元。
合法的字元包含:換行符號、空格、所有標點符號、數字,以及英文大小寫字母。
(注意:Tab(跳位符)不是合法字元。)

輸出說明

程式的輸出應該是:最後一個句子垂直列印在最左邊的欄位;
而第一個輸入的句子則會出現在最右邊的欄位。

解題思路

先將所有句子都輸入紀錄,並記錄下最長的一個句子長度。
接著透過迴圈將每個句子和最長的句子的長度進行比較,並將短的句子補齊空白。
最後透過迴圈有下到上,左到右列印出結果。

程式碼

#include <bits/stdc++.h>

using namespace std;

int main() {
    vector<string> sentences;
    string input;
    int max_length = -1, cnt_sentences = 0, input_length;
    while (getline(cin, input)) {
        sentences.push_back(input);
        input_length = input.length();
        max_length = max(max_length, input_length);
        cnt_sentences++;
    }
    for (int j = 0; j < cnt_sentences; j++) {
        while (max_length > sentences[j].length()) {
            sentences[j] += ' ';
        }
    }
    for (int i = 0; i < max_length; i++) {
        for (int j = cnt_sentences - 1; j >= 0; j--) {
            cout << sentences[j][i];
        }
        cout << '\n';
    }
    return 0;
}