Computer >> Máy Tính >  >> Lập trình >> Python

Số dòng để viết chuỗi trong Python

Giả sử chúng ta có một chuỗi S và chúng ta phải viết các chữ cái của chuỗi đã cho đó, từ trái sang phải thành các dòng. Ở đây, mỗi dòng có chiều rộng tối đa 100 đơn vị và nếu viết một chữ cái sẽ khiến chiều rộng của dòng vượt quá 100 đơn vị, thì chiều rộng đó sẽ được viết trên dòng tiếp theo. Chúng tôi cũng có chiều rộng mảng, ở đây width [0] là chiều rộng của 'a', width [1] là chiều rộng của 'b', v.v.

Chúng ta phải tìm câu trả lời cho hai câu hỏi -

  • Có bao nhiêu dòng có ít nhất một ký tự từ S
  • Chiều rộng của dòng cuối cùng như vậy là bao nhiêu?

Chúng tôi sẽ trả về câu trả lời dưới dạng danh sách số nguyên có độ dài 2.

Vì vậy, nếu đầu vào là [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] và S ="bbbcccdddaaa", thì đầu ra sẽ là [2, 4], vì tất cả các chữ cái ngoại trừ 'a' có cùng độ dài là 10 và chuỗi "bbbcccdddaa" sẽ bao gồm 9 * 10 + 2 * 4 =98 khoảng trắng. Đối với chữ 'a' cuối cùng, nó được viết ở dòng thứ hai vì dòng đầu tiên chỉ còn lại 2 đơn vị. Vì vậy, câu trả lời là 2 dòng, cộng với 4 đơn vị ở dòng thứ hai.

Để giải quyết vấn đề này, chúng tôi sẽ làm theo các bước sau -

  • dòng:=1, count:=0
  • đối với mỗi tôi trong S, thực hiện
    • count:=count + width [ASCII of i - 97]
    • nếu đếm> 100, thì
      • line:=line + 1
      • count:=width [ASCII of i - 97]
  • trả về [dòng, số lượng]

Hãy cùng chúng tôi xem cách triển khai sau để hiểu rõ hơn -

Ví dụ

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
      count = 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"))

Đầu vào

[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"

Đầu ra

[2, 4]