मान लीजिए हमारे पास एक स्ट्रिंग S है और हमें उस दिए गए स्ट्रिंग के अक्षरों को बाएं से दाएं पंक्तियों में लिखना है। यहाँ प्रत्येक पंक्ति की अधिकतम चौड़ाई 100 इकाई है, और यदि पत्र लिखने से रेखा की चौड़ाई 100 इकाई से अधिक हो जाती है, तो वह अगली पंक्ति पर लिखी जाएगी। हमारे पास एक सरणी चौड़ाई भी है, यहां चौड़ाई [0] 'ए' की चौड़ाई है, चौड़ाई [1] 'बी' की चौड़ाई है और इसी तरह।
हमें दो सवालों के जवाब तलाशने हैं -
- कितनी पंक्तियों में 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,10] और S ="bbbcccdddaaa", तो आउटपुट [2, 4] होगा, क्योंकि 'a' को छोड़कर सभी अक्षरों की लंबाई 10 समान है, और स्ट्रिंग "bbbcccdddaa" कवर करेगी। 9 * 10 + 2 * 4 =98 रिक्त स्थान। अंतिम 'a' के लिए दूसरी पंक्ति पर लिखा जाता है क्योंकि पहली पंक्ति में केवल 2 इकाइयाँ बची होती हैं। तो उत्तर 2 पंक्तियाँ है, साथ ही दूसरी पंक्ति में 4 इकाइयाँ।
इसे हल करने के लिए, हम इन चरणों का पालन करेंगे -
- पंक्ति :=1, गिनती :=0
- एस में प्रत्येक i के लिए, करें
- गिनती :=गिनती + चौड़ाई[ASCII of i - 97]
- अगर गिनती> 100, तो
- लाइन:=लाइन + 1
- गिनती :=चौड़ाई[ASCII of 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 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]