Данная строка s. Вернуть все слова по вертикали в том же порядке, в котором они появляются в s. Слова возвращаются в виде строкового списка, при необходимости дополненного пробелами. (Хождение по ступенькам запрещено). Каждое слово будет помещено только в один столбец, и в каждом столбце будет только одно слово.
Пример 1:
Ввод: s = "КАК ТЫ" Вывод: ["ЭЙ ","ORO","WEU"] Объяснение: Каждое слово печатается вертикально. "HAY" "ORO" "WEU"
Пример 2:
Ввод: s = "БЫТЬ ИЛИ НЕ БЫТЬ" Вывод: ["TBONTB","OEROOE"," T"] Объяснение: Завершающие пробелы не допускаются. "TBONTB" "OEROOE" " T"
Пример 3:
Ввод: s = "КОНКУРС ПРИБЛИЖАЕТСЯ" Вывод: ["CIC","OSO","NM", "TI","EN","SG","T"]
Ограничения:
- 1 <= s.length <= 200
- s содержит только заглавные буквы латинского алфавита.
- Гарантируется, что между двумя словами есть только один пробел.
Способ №1: [По горизонтали в вертикаль] с использованием цикла + " ‚"
Здесь мы добавляем символ новой строки после каждого символа, чтобы каждый элемент отображался на следующей строке.
# Код Python3 для демонстрации работы # Interconvert Horizontal и Вертикальная строка # с использованием [Horizontal to Vertical] с использованием цикла + " " # инициализация строки test_str = `geeksforgeeks` # печать исходной строки print("Исходная строка: " + str(test_str)) # использование цикла для добавления " " после каждого символ res = `` для ele в test_str: res += ele + " " # результат печати print("Преобразованная строка: " + str(res))
Вывод:
Выходные данные Исходная строка: geeksforgeeks T он преобразовал строку: geeksforgeeks
Метод № 2: [Вертикальное в горизонтальное] с помощью replace() + " ‚"
В этом мы выполняем задачу преобразования, удаляя " ‚" путем замены пустым string.
# Код Python3 для демонстрации работы # Преобразования горизонтальной и вертикальной строк # с использованием [Vertical to Horizontal] с помощью replace() + " " # инициализация строки test_str = `geeksforgeeks ` # вывод исходной строки print( "Исходная строка: " + str(test_str)) # использование replace() + " " для решения этой проблемы res = test_str.replace(" ", "") # результат печати print("Преобразованная строка: " + str (res))
Вывод:
Исходная строка: geeksforgeeks Преобразованная строка: geeksforgeeks
Вертикальная строка печати — Python3.2
Вопрос StackOverflow
Я пишу скрипт, который займет в виде строки, введенной пользователем, и вывести ее вертикально, например:
input = "Джон пошел в магазин" output = J wttsoaoohthleonkreed
Я написал больше всего кода, который выглядит следующим образом:
import sys def verticalPrint(astring): wordList = asstring.split(" ") wordAmount = len(wordList) maxLen = 0 для я в диапазон (wordAmount): length = len(wordList[i]) if length >= maxLen: maxLen = length ### делает все слова одинаковой длины, чтобы избежать ошибок диапазона ### для i в диапазоне (wordAmount): if len(wordList[i]) < maxLen: wordList[i] = wordList[i] + (" ")*(maxLen-len( wordList[i])) для я в диапазоне (wordAmount): для j в диапазоне (maxLen): print(wordList[i][j]) def main(): astring = input("Введите строку:" + ` `) verticalPrint(astring) main()
Я не могу понять, как получить вывод правильный. Я знаю, что это проблема с циклом for. Вывод:
input = "Джон шел" output = Джон шел
Есть совет? (Кроме того, я хочу, чтобы команда print использовалась только один раз.)
Ответ:
Используйте itertools.zip_longest
:
>>> из itertools импорт zip_longest >> > text = "Джон шел в магазин" для x в zip_longest(*text.split(), fillvalue=` `): print (` `.join(x)) ... J wttsoaoohthleonkreed
Предположим, у нас есть строка s. Мы должны найти все слова по вертикали в том же порядке, в котором они стоят в s. Здесь слова возвращаются в виде списка строк, при необходимости приходится заполнять пробелы. (Конечные пробелы не допускаются.) Каждое слово будет помещено только в один столбец, и в одном столбце будет только одно слово. Таким образом, если входная строка "LIKE YOU?", то вывод будет ["HAY", "ORO", "WEU", "WEU"]
Чтобы решить эту проблему, мы будем следовать следующие шаги:
- j:= 0
- в то время как j < длина s[i]
- в то время как i – длина ans[j] >= 1, do ans[j]:= ans[j] concatenate " ‚"
- ans[j]:= ans[j] concatenate s[i , j]
- увеличить j на 1
class Solution(object): def printVertically(self, s ): s = s.split(" ") x = [] row = 0 для i в s: row = max(row, len(i)) col = len(s) ans = ["" для i в диапазоне( row)] j = 0 for i in range(col): j = 0, while j < len(s[i]): #print(j, i) while i - len(ans[j]) >= 1: ans [j] += " " ans[j] += s[i][j] j += 1 return ans ob = Solution() print(ob.printVertically("КАК ТЫ")) print(ob.printVertically("БЫТЬ ИЛИ НЕ БЫТЬ"))
Ввод:
"КАК ТЫ" "БЫТЬ ИЛИ НЕ БЫТЬ"
Вывод:
["HAY","ORO","WEU"]["TBONTB", "ОЭРООЕ", "Т"]