
Вопрос:
Дана строка 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 <= 200sсодержит только заглавные английские буквы.- Гарантируется, что между двумя словами есть только один пробел.
Решение:
Первый шаг: разбить заданную строку на слово массива, используя встроенный строковый метод .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 !!
Намасте