मान लीजिए हमारे पास N लोअरकेस अक्षर स्ट्रिंग की एक सरणी है, सरणी का नाम A है, सभी स्ट्रिंग्स की लंबाई समान है। अब, हम डिलीशन इंडेक्स का कोई भी सेट चुन सकते हैं, और प्रत्येक स्ट्रिंग के लिए, हम उन इंडेक्स के सभी वर्णों को हटा देते हैं।
उदाहरण के लिए, यदि हमारे पास A जैसे ["abcdef","uvwxyz"] सरणी है और डिलीशन इंडेक्स {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"] गैर-घटते क्रम में सॉर्ट हैं। और यदि हम D = {} चुनते हैं, तो कॉलम ["b","a","h"] गैर-घटते क्रम में सॉर्ट नहीं होगा।
इसे हल करने के लिए, हम इन चरणों का पालन करेंगे -
- A = सरणी से स्ट्रिंग्स लेकर एक मैट्रिक्स बनाएं, और वर्णों को अलग-अलग कॉलम में अलग करें
- B = नई खाली सूची
- A में प्रत्येक कॉलम के लिए, करें
- यदि कॉलम पहले से सॉर्ट है तो B में 0 डालें
- अन्यथा B में 1 डालें
- B में सभी तत्वों का योग लौटाएं
बेहतर समझ के लिए निम्न कार्यान्वयन देखें -
उदाहरण
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