Computer >> คอมพิวเตอร์ >  >> การเขียนโปรแกรม >> Python

พิมพ์คำในแนวตั้งใน Python


สมมติว่าเรามีสตริง s เราต้องหาคำทั้งหมดในแนวตั้งในลำดับเดียวกันกับที่ปรากฏใน s ที่นี่คำจะถูกส่งกลับเป็นรายการสตริง เราต้องเติมช่องว่างเมื่อจำเป็น (ไม่อนุญาตให้เว้นวรรค) แต่ละคำจะใส่ไว้เพียงคอลัมน์เดียว และในคอลัมน์เดียวจะมีเพียงคำเดียว ดังนั้นหากสตริงอินพุตคือ "HOW ARE YOU" ผลลัพธ์จะเป็น ["HAY", "ORO", "WEU"]

เพื่อแก้ปัญหานี้ เราจะทำตามขั้นตอนเหล่านี้ -

  • s :=สร้างรายการสตริงที่แบ่งตามช่องว่าง สร้างอาร์เรย์ว่าง x หนึ่งชุด ตั้งแถว =0

  • สำหรับแต่ละคำที่ฉันอยู่ใน s ให้ตั้งค่าแถว :=สูงสุดของแถวและความยาวของ i

  • col :=ความยาวของ s

  • สร้างหนึ่งอาร์เรย์และเติมด้วยสตริงว่างและขนาดของมันคือแถว

  • สำหรับผมอยู่ในช่วง 0 ถึง col – 1

    • เจ :=0

    • ในขณะที่ j <ความยาวของ s[i]

      • ในขณะที่ i – ความยาวของ ans[j]>=1, do ans[j] :=ans[j] concatenate “ ”

      • ans[j] :=ans[j] concatenate s[i, j]

      • เพิ่มขึ้น 1

  • กลับมาอีกครั้ง

ตัวอย่าง (Python)

ให้เราดูการใช้งานต่อไปนี้เพื่อความเข้าใจที่ดีขึ้น -

class Solution(object):
   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(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("HOW ARE YOU"))
print(ob.printVertically("TO BE OR NOT TO BE"))

อินพุต

"HOW ARE YOU"
"TO BE OR NOT TO BE"

ผลลัพธ์

["HAY","ORO","WEU"]
["TBONTB","OEROOE"," T"]