সমস্যা বিবরণ
একটি স্ট্রিং S এবং প্রতিটি অক্ষরের প্রস্থ (widths array) দেওয়া থাকে। প্রতিটি লাইনের সর্বোচ্চ প্রস্থ ১০০ ইউনিট। S-এর অক্ষরগুলো বাম থেকে ডানে লিখতে হবে। যদি কোনো অক্ষর লিখতে লাইনের প্রস্থ ১০০ ছাড়িয়ে যায়, তবে পরবর্তী লাইনে লিখুন। دوটি জিজ্ঞাসার উত্তর দিন: (১) কত লাইন লাগলো, (২) শেষ লাইনের প্রস্থ কত।
উদাহরণ
widths = [4,10,10,...] (a=4, b-z=10), S = "bbbcccdddaaa" → আউটপুট: [2, 4]
ব্যাখ্যা: প্রথম লাইনে "bbbcccdddaa" = 9×10 + 2×4 = ৯৮ ইউনিট। শেষ 'a' (প্রস্থ ৪) দ্বিতীয় লাইনে যায়।
এলগরিদম
line = 1,count = 0(বর্তমান লাইনের প্রস্থ)।- S-এর প্রতিটি অক্ষর
cএর জন্য:count += widths[ord(c) - 97]।- যদি
count > 100→line += 1,count = widths[ord(c) - 97](নতুন লাইনে শুরু)।
[line, count]রিটার্ন করুন।
পাইথন বাস্তবায়ন
class Solution:
def numberOfLines(self, widths, S):
line = 1
count = 0
for c in S:
w = widths[ord(c) - 97]
if count + w > 100:
line += 1
count = w
else:
count += w
return [line, count]
ob = Solution()
print(ob.numberOfLines([4]+[10]*25, "bbbcccdddaaa")) # [2, 4]
ইনপুট / আউটপুট
ইনপুট: widths array, "bbbcccdddaaa" আউটপুট: [2, 4]