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

จำนวนบรรทัดในการเขียนสตริงใน Python


สมมติว่าเรามีสตริง S และเราต้องเขียนตัวอักษรของสตริงที่กำหนดจากซ้ายไปขวาลงในบรรทัด ที่นี่แต่ละบรรทัดมีความกว้างสูงสุด 100 หน่วย และหากการเขียนจดหมายจะทำให้ความกว้างของบรรทัดเกิน 100 หน่วย ก็จะถูกเขียนในบรรทัดถัดไป นอกจากนี้เรายังมีความกว้างของอาร์เรย์ โดยที่ width[0] คือความกว้างของ 'a', width[1] คือความกว้างของ 'b'และอื่นๆ

เราต้องหาคำตอบของคำถามสองข้อ -

  • มีอักขระจาก S อย่างน้อย 1 ตัวกี่บรรทัด
  • เส้นสุดท้ายใช้ความกว้างเท่าไหร่

เราจะส่งคืนคำตอบเป็นรายการจำนวนเต็มของความยาว 2

ดังนั้นหากอินพุตเป็นเช่น[4,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10, 10,10,10,10,10] และ S ="bbbcccdddaaa" ดังนั้นผลลัพธ์จะเป็น [2, 4] เนื่องจากตัวอักษรทั้งหมดยกเว้น 'a' มีความยาวเท่ากันคือ 10 และสตริง "bbbcccdddaa" จะครอบคลุม 9 * 10 + 2 * 4 =98 ช่องว่าง สำหรับ 'a' สุดท้าย จะเขียนในบรรทัดที่สอง เนื่องจากเหลือเพียง 2 หน่วยในบรรทัดแรก คำตอบคือ 2 บรรทัด บวก 4 หน่วยในบรรทัดที่สอง

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

  • บรรทัด :=1 นับ :=0
  • สำหรับแต่ละ i ใน S ทำ
    • จำนวน :=นับ + ความกว้าง[ASCII ของ i - 97]
    • ถ้านับ> 100 แล้ว
      • line :=line + 1
      • จำนวน :=ความกว้าง[ASCII ของ i - 97]
  • กลับ [บรรทัด นับ]

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

ตัวอย่าง

class Solution:def numberOfLines(self, widths, S):line =1 count =0 for i in S:count +=widths[ord(str(i))-97] if count> 100:line +=1 จำนวน =widths[ord(str(i))-97] return [line, count]ob =Solution()print(ob.numberOfLines([4,10,10,10,10,10,10,10,10 ,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10], "bbbcccdddaaa"))

อินพุต

<ก่อน>[4,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10, 10,10,10],"bbbcccdddaaa"

ผลลัพธ์

[2, 4]