La stringa data s. Restituisci tutte le parole verticalmente nello stesso ordine in cui appaiono in s. Le parole vengono restituite come un elenco di stringhe, riempito con spazi quando necessario. (Non è consentito camminare sui gradini). Ogni parola sarà inserita solo in una colonna e ci sarà solo una parola per colonna.
Esempio 1:
Input: s = "COME SEI" Output: ["HAY ","ORO","WEU"] Spiegazione: Ogni parola viene stampata verticalmente. "HAY" "ORO" "WEU"
Esempio 2:
Input: s = "ESSERE O NON ESSERE" Output: ["TBONTB","OEROOE"," T"] Spiegazione: Gli spazi finali non sono consentiti. "TBONTB" "OEROOE" " T"
Esempio 3:
Input: s = "CONTEST IS COMING" Output: ["CIC","OSO","NM", "TI","EN","SG","T"]
Vincoli:
- 1 <= s.lunghezza <= 200
- s contiene solo lettere inglesi maiuscole.
- È garantito che ci sia solo uno spazio tra 2 parole.
Metodo n. 1: [da orizzontale a verticale] usando il loop + " ‚"
In questo, aggiungiamo un carattere di nuova riga dopo ogni carattere in modo che ogni elemento venga renderizzato alla riga successiva.
# Codice Python3 per dimostrare il funzionamento di # Interconvert Horizontal e Stringa verticale # usando [Orizzontale a Verticale] usando loop + " " # inizializzazione stringa test_str = `geeksforgeeks` # stampa stringa originale print("La stringa originale è: " + str(test_str)) # using loop per aggiungere " " dopo ogni carattere res = `` for ele in test_str: res += ele + " " # print result print("La stringa convertita: " + str(res))
Output:
Output La stringa originale è: geeksforgeeks T ha convertito la stringa: geeksforgeeks
Metodo n. 2: [da verticale a orizzontale] usando replace() + " ‚"
In questo, eseguiamo il compito di conversione rimuovendo " ‚" per sostituzione con vuoto string.
# Codice Python3 per dimostrare il funzionamento di # Interconvert Horizontal and Vertical String # usando [Vertical to Horizontal] using replace() + " " # initializing string test_str = `geeksforgeeks ` # printing original String print( "La stringa originale è: " + str(test_str)) # using replace() + " " per risolvere questo problema res = test_str.replace(" ", "") # print result print("La stringa convertita: " + str (res))
Output:
La stringa originale è: geeksforgeeks La stringa convertita: geeksforgeeks
Stringa di stampa verticale - Python3.2
Domanda StackOverflow
Sto scrivendo uno script che richiederà come stringa immessa dall`utente e stamparla verticalmente, in questo modo:
input = "John è andato al negozio" output = J wttsoaohthleonkreed
Ho scritto di più del codice, che è il seguente:
import sys def verticalPrint(astring): wordList = astring.split(" ") wordAmount = len(wordList) maxLen = 0 per i in intervallo (wordAmount): lunghezza = len(wordList[i]) if lunghezza >= maxLen: maxLen = lunghezza ### rende tutte le parole della stessa lunghezza per evitare errori di intervallo ### per i in intervallo (wordAmount): se len(wordList[i]) < maxLen: wordList[i] = wordList[i] + (" ")*(maxLen-len( wordList[i])) per i in intervallo (wordAmount): per j in intervallo (maxLen): stampa(wordList[i][j]) def main(): astring = input("Inserisci una stringa:" + ` `) verticalPrint(astring) main()
Ho problemi a capire come ottenere l`output corretta. So che è un problema con il ciclo for. Il suo output è:
input = "Giovanni camminava" output = Giovanni camminava
Qualche consiglio? (Inoltre, voglio che il comando stampa venga utilizzato solo una volta.)
Risposta:
Usa itertools.zip_longest
:
>>> da itertools import zip_longest >> > text = "John è andato al negozio" per x in zip_longest(*text.split(), fillvalue=` `): stampa (` `.join(x)) ... J wttsoaohthleonkreed
Supponiamo di avere la stringa s. Dobbiamo trovare tutte le parole verticalmente nello stesso ordine in cui compaiono in s. Qui le parole vengono restituite come un elenco di stringhe, se necessario dobbiamo riempire degli spazi. (Gli spazi finali non sono consentiti.) Ogni parola verrà inserita in una sola colonna e ci sarà solo una parola in una colonna. Pertanto, se la stringa di input è "LIKE YOU?", l`output sarà ["HAY‚", "ORO‚", "WEU‚"]
Per risolvere questo problema, seguiremo il seguenti passaggi:
- j:= 0
- mentre j < lunghezza di s[i]
- mentre i ‚Äì lunghezza di ans[j] >= 1, do ans[j]:= ans[j] concatenate " ‚"
- ans[j]:= ans[j] concatenate s[i , j]
- incrementa j di 1
class Solution(object): def printVertical(self, s ): s = s.split(" ") x = [] row = 0 for i in s: row = max(row, len(i)) col = len(s) ans = ["" for i in range( 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.printVertical("COME SEI")) print(ob.printVertical("ESSERE O NON ESSERE"))
Input:
"COME SEI" "ESSERE O NON ESSERE"
Output:
["HAY","ORO","WEU"] ["TBONTB", "OEROOE", "T"]