Вопрос:

Дана строка s. Верните все слова по вертикали в том же порядке, в котором они появляются в s. Слова возвращаются в виде списка строк, дополненных пробелами, когда это необходимо. (Конечные пробелы не допускаются).

Каждое слово помещалось бы только в один столбец, а то в одном столбце будет только одно слово.

Пример 1:

Input: s = "HOW ARE YOU"
Output: ["HAY","ORO","WEU"]
Explanation: Each word is printed vertically.
 "HAY"
 "ORO"
 "WEU"

Пример 2:

Input: s = "TO BE OR NOT TO BE"
Output: ["TBONTB","OEROOE","   T"]
Explanation: Trailing spaces is not allowed.
"TBONTB"
"OEROOE"
"   T"

Пример 3:

Input: s = "CONTEST IS COMING"
Output: ["CIC","OSO","N M","T I","E N","S G","T"]

Ограничения:

  • 1 <= s.length <= 200
  • s содержит только заглавные английские буквы.
  • Гарантируется, что между двумя словами есть только один пробел.

Решение:

Первый шаг: разбить заданную строку на слово массива, используя встроенный строковый метод .split(), а затем найти максимальную длину слова. Теперь перебираем каждое слово и получаем первый символ каждого слова, затем получаем второй символ каждого слова и так далее. Если есть пустой символ, добавьте пустое место к строке. Проблема здесь будет заключаться в том, что мы добавим дополнительное пространство в конце. так что для этого мы переберем вертикальный массив и удалим лишний пробел в конце.

вот полная демонстрация:

function printVertically(s: string): string[] {
    const splitStr: string[] = s.split(" "); // Split into words
    const maxLength = splitStr.reduce((prev: number, cur : string)
    :number => {
        return prev > cur.length ? prev : cur.length ;
    },0)

    const verticalArray: string[] = [];
    let arrayString: string = "";
    for ( let j:number = 0; j< maxLength ; j++) {
        for( let i: number = 0 ; i< splitStr.length; i++) {
            if ( splitStr[i].charAt(j) == "") {
                arrayString += " ";
            }
            else {
                arrayString += splitStr[i].charAt(j);
            }
        }
        verticalArray.push(arrayString);
        arrayString = "";
   }
   const newArray = verticalArray.map( el => {return el.trimEnd()});
   return newArray;
};
printVertically("How Are You?");

Я надеюсь, что этот пост помог. Пожалуйста, дайте мне знать, если есть какие-либо комментарии или сомнения.

Удачного кодирования Leet !!

Намасте