मान लीजिए हमारे पास एक स्ट्रिंग S है और हमें उस स्ट्रिंग के अक्षरों को बाएं से दाएं पंक्तियों में लिखना है। यहां प्रत्येक पंक्ति की अधिकतम चौड़ाई 100 इकाई है, और यदि किसी अक्षर को लिखने से पंक्ति की चौड़ाई 100 इकाई से अधिक हो जाती है, तो उसे अगली पंक्ति में लिखा जाएगा। हमारे पास एक सरणी widths भी है, जहां widths[0] 'a' की चौड़ाई है, widths[1] 'b' की चौड़ाई है, इत्यादि।
हमें दो प्रश्नों के उत्तर ढूंढने हैं:
- कितनी पंक्तियों में S का कम से कम एक वर्ण है
- अंतिम ऐसी पंक्ति द्वारा उपयोग की गई चौड़ाई क्या है?
हम उत्तर को लंबाई 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 इकाई है।
हल करने के चरण
- line := 1, count := 0
- S में प्रत्येक i के लिए:
- count := count + widths[i का ASCII - 97]
- यदि count > 100, तो:
- line := line + 1
- count := widths[i का ASCII - 97]
- [line, count] वापस करें
उदाहरण
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"))
इनपुट
[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]