मान लीजिए कि हमारे पास एन लोअरकेस अक्षर स्ट्रिंग्स की एक सरणी है, सरणी का नाम ए है, सभी स्ट्रिंग समान लंबाई के हैं। अब, हम विलोपन सूचकांकों का कोई भी सेट चुन सकते हैं, और प्रत्येक स्ट्रिंग के लिए, हम उन सूचकांकों के सभी वर्णों को हटा देते हैं।
एक उदाहरण के रूप में, यदि हमारे पास ["abcdef", "uvwxyz"] की तरह एक सरणी A है और विलोपन सूचकांक {0, 2, 3} हैं, तो विलोपन के बाद अंतिम सरणी ["bef", "vyz"] होगी, और A के शेष कॉलम ["b",,"v"], ["e",,"y"], और ["f",,"z"] हैं।
मान लीजिए कि हमने विलोपन सूचकांकों का एक सेट D चुना है, जैसे हटाने के बाद, A में प्रत्येक शेष कॉलम गैर-घटते क्रम में है। हमें D की लंबाई का न्यूनतम संभव मान ज्ञात करना है।
इसलिए, यदि इनपुट ["cba",,"daf",,"ghi"] जैसा है, तो आउटपुट 1 होगा, ऐसा इसलिए है क्योंकि D ={1} चुनने के बाद, प्रत्येक कॉलम ["c",,"d" , "g"] और ["a",,"f",,"i"] गैर-घटते क्रम में हैं। और अगर हमने डी ={} चुना है, तो एक कॉलम ["बी", "ए", "एच"] गैर-घटते क्रम में नहीं होगा।
इसे हल करने के लिए, हम इन चरणों का पालन करेंगे -
- A =सरणी से तार लेकर एक मैट्रिक्स बनाएं, और वर्णों को अलग-अलग कॉलम में अलग करें
- B =नई खाली सूची
- ए में कर्नल के लिए, करें
- अगर col पहले से ही सॉर्ट किया गया है तो B में 0 डालें
- अन्यथा B में 1 डालें
- बी में सभी तत्वों का योग लौटाएं
आइए बेहतर समझ पाने के लिए निम्नलिखित कार्यान्वयन देखें -
उदाहरण
class Solution: def minDeletionSize(self, A): return sum([1-(sorted(col)==list(col)) for col in zip(*A)]) ob = Solution() print(ob.minDeletionSize(["cba","daf","ghi"]))
इनपुट
["cba","daf","ghi"]
आउटपुट
1