दिए गए स्ट्रिंग s. सभी शब्दों को उसी क्रम में लंबवत रूप से लौटाएं जैसे वे s में दिखाई देते हैं। शब्दों को एक स्ट्रिंग सूची के रूप में लौटाया जाता है, जब आवश्यक हो तो रिक्त स्थान के साथ गद्देदार। (सीढ़ियों पर चलने की अनुमति नहीं है)। प्रत्येक शब्द केवल एक कॉलम में रखा जाएगा और प्रति कॉलम केवल एक शब्द होगा।
उदाहरण 1:
इनपुट: s = "आप कैसे हैं" आउटपुट: ["HAY ","ORO", "WEU"] स्पष्टीकरण: प्रत्येक शब्द लंबवत रूप से मुद्रित होता है। "HAY" "ORO" "WEU"
उदाहरण 2:
इनपुट: s = "टू बी या नॉट टू बी" आउटपुट: ["TBONTB",,"OEROOE"," टी"] स्पष्टीकरण: पिछली जगहों की अनुमति नहीं है। "TBONTB" "OEROOE" "T"
उदाहरण 3:
इनपुट: s = "प्रतियोगिता आ रही है" आउटपुट: ["CIC",,"OSO",,"NM", "TI",,"EN",,"SG",,"T"]
बाधाएं:
- 1 <= s.length <= 200
- s में केवल बड़े अक्षर वाले अंग्रेजी अक्षर होते हैं।
- यह गारंटी है कि 2 शब्दों के बीच केवल एक स्थान है।
विधि #1: [क्षैतिज से लंबवत] लूप का उपयोग करके + " ‚"
इसमें, हम प्रत्येक वर्ण के बाद न्यूलाइन वर्ण जोड़ते हैं ताकि प्रत्येक तत्व अगली पंक्ति में प्रस्तुत हो जाए।
# Python3 कोड # इंटरकनवर्ट क्षैतिज और के कार्य को प्रदर्शित करने के लिए लंबवत स्ट्रिंग # [क्षैतिज से लंबवत] लूप का उपयोग करके + "" # प्रारंभिक स्ट्रिंग test_str = `geeksforgeeks` # मूल स्ट्रिंग प्रिंट करना ("मूल स्ट्रिंग है:" + str (test_str)) # प्रत्येक के बाद "" जोड़ने के लिए लूप का उपयोग करना चरित्र res = `` के लिए ele में test_str: res += ele + "" # मुद्रण परिणाम प्रिंट ("परिवर्तित स्ट्रिंग:" + str(res))
आउटपुट:
आउटपुट मूल स्ट्रिंग है: geeksforgeeks T उन्होंने स्ट्रिंग को कन्वर्ट किया: geeksforgeeks
विधि #2: [वर्टिकल टू हॉरिजॉन्टल] रिप्लेस() + "
इसमें हम " को रिप्लेस करके रिप्लेस करके कन्वर्जन का काम करते हैं। string.
# Python3 कोड # इंटरकनवर्ट हॉरिजॉन्टल और वर्टिकल स्ट्रिंग के काम को प्रदर्शित करने के लिए # [वर्टिकल से हॉरिजॉन्टल] का उपयोग करके रिप्लेस() + "" # इनिशियलाइज़िंग स्ट्रिंग test_str = `geeksforgeeks` # मूल स्ट्रिंग प्रिंट को प्रिंट करना ( "मूल स्ट्रिंग है:" + str(test_str)) # इस समस्या को हल करने के लिए रिप्लेस () + "" का उपयोग करके res = test_str.replace(" ", "") # प्रिंटिंग परिणाम प्रिंट ("परिवर्तित स्ट्रिंग:" + str (res))
आउटपुट:
मूल स्ट्रिंग है: geeksforgeeks परिवर्तित स्ट्रिंग: geeksforgeeks
Vertical Print String - Python3.2
StackOverflow Question
मैं एक स्क्रिप्ट लिख रहा हूं जिसमें उपयोगकर्ता द्वारा इनपुट की गई स्ट्रिंग के रूप में, और इसे लंबवत रूप से प्रिंट करें, जैसे:
इनपुट = "जॉन वॉक टू द स्टोर" आउटपुट = J wttsoaohthleonkreed
मैंने सबसे ज्यादा लिखा है कोड का, जो इस प्रकार है:
import sys def verticalPrint(astring अवधि>): शब्दसूची = astring.split(" ") wordAmount = len(wordList) maxLen = 0 के लिए i इन श्रेणी (wordAmount): लंबाई = len(wordList[i]) अगर लंबाई >= maxLen: maxLen = लंबाई ### रेंज त्रुटियों से बचने के लिए सभी शब्दों को समान लंबाई बनाता है ### के लिए i इन श्रेणी (wordAmount): अगर len(wordList[i]) < मैक्सलेन: वर्डलिस्ट [i] = वर्डलिस्ट [i] + (" ")*(maxLen-len( wordList[i])) के लिए i इन श्रेणी span> (wordAmount): के लिए j इन श्रेणी स्पैन> (मैक्सलेन): print(wordList[i][j]) def main(): astring = input("Enter a string:" span> + ` `) verticalPrint(astring) main()
मुझे यह पता लगाने में परेशानी हो रही है कि आउटपुट कैसे प्राप्त करें सही। मुझे पता है कि यह लूप के साथ एक समस्या है। इसका आउटपुट है:
input = "जॉन वॉक" आउटपुट = J ohnwalked
कोई सलाह? (साथ ही, मैं चाहता हूं कि प्रिंट कमांड केवल एक बार उपयोग किया जाए।)
उत्तर:
itertools.zip_longest
का उपयोग करें:
>>> से itertools आयात zip_longest >> > text = "जॉन स्टोर पर गया" के लिए x में zip_longest(*text.split(), fillvalue=` `): print स्पैन> (` `.join(x)) ... J wttsoohthleonkreed
मान लीजिए कि हमारे पास string s है। हमें सभी शब्दों को लंबवत रूप से उसी क्रम में खोजना है जिसमें वे s में दिखाई देते हैं। यहां शब्दों को स्ट्रिंग्स की सूची के रूप में वापस किया जाता है, यदि आवश्यक हो, तो हमें रिक्त स्थान भरना होगा। (अनुगामी रिक्त स्थान की अनुमति नहीं है।) प्रत्येक शब्द केवल एक कॉलम में रखा जाएगा, और एक कॉलम में केवल एक शब्द होगा। इस प्रकार, यदि इनपुट स्ट्रिंग "LIKE You?" है, तो आउटपुट ["HAY‚", "ORO‚", "WEU‚"]
इस समस्या को हल करने के लिए, हम निम्नलिखित का पालन करेंगे) निम्नलिखित चरण:
- j:= 0
- जबकि j < लंबाई s[i]
- जबकि मैं ans[j] >= 1, की लंबाई ans[j]:= ans[j] concatenate " ‚"
- ans[j]:= ans[j] concatenate s[i , j]
- j को 1 से बढ़ाएं
वर्ग समाधान(वस्तु): def PrintVertically(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( पंक्ति)] j = 0 के लिए मैं रेंज में (col): j = 0 जबकि j <लेन (s[i]): #print(j, i) जबकि i - len(ans[j]) >= 1: ans [जे] + = "" उत्तर [जे] + = एस [i] [जे] जे + = 1 वापसी उत्तर = समाधान () प्रिंट (ob.printVertically ("आप कैसे हैं")) प्रिंट (ob.printVertical ("होना या नहीं होना"))
इनपुट:
"आप कैसे हैं" "होने के लिए या नहीं होने के लिए"
आउटपुट:
["HAY",,"ORO",,"WEU"] ["TBONTB", "ओईआरओई", "टी"]