दी गई स्ट्रिंग अंकों और अक्षरों का मिश्रण हो सकती है। इस लेख में हमें सबसे बड़ा सबस्ट्रिंग खोजने की आवश्यकता है जिसमें अक्षर और अंक एक साथ हों।
पुनः मॉड्यूल के साथ
रेगुलर एक्सप्रेशन मॉड्यूल का उपयोग अंकों या अक्षरों वाले सभी निरंतर सबस्ट्रिंग को खोजने के लिए किया जा सकता है। फिर हम अक्षरों और अंकों के केवल उन निरंतर सबस्ट्रिंग को चुनने के लिए अधिकतम फ़ंक्शन लागू करते हैं जिनकी सभी सबस्ट्रिंग्स में अधिकतम लंबाई होती है। फाइंडऑल फ़ंक्शन का उपयोग आवश्यक सबस्ट्रिंग को पहचानने और प्राप्त करने के लिए भी किया जाता है।
उदाहरण
import re def longSubstring(str): letter = max(re.findall(r'\D+', str), key=len) digit = max(re.findall(r'\d+', str), key=len) return letter, digit str = 'Hello 459 Congratulations! 234' print(longSubstring(str))
आउटपुट
उपरोक्त कोड को चलाने से हमें निम्नलिखित परिणाम मिलते हैं -
(' Congratulations! ', '459')
लेन() और जबकि लूप के साथ
यह एक सीधा लेकिन धीमा तरीका है जिसमें हम दिए गए स्ट्रिंग में सबस्ट्रिंग के रूप में मौजूद अंकों और अक्षरों की लंबाई की जांच करने के लिए लूप के दौरान डिज़ाइन करते हैं। फिर हम उनकी लंबाई की तुलना करते हैं और केवल अधिकतम लंबाई वाले सबस्ट्रिंग चुनते हैं।
उदाहरण
def longSubstring(s): max_letterSeq = '' max_digitSeq = '' i = 0 while (i < len(s)): current_letterSeq = '' current_digitSeq = '' # Letters while (i < len(s) and s[i].isalpha()): current_letterSeq += s[i] i += 1 # Digits while (i < len(s) and s[i].isdigit()): current_digitSeq += s[i] i += 1 # Check if not digit or alphabet if (i < len(s) and not (s[i].isdigit()) and not (s[i].isalpha())): i += 1 if (len(current_letterSeq) > len(max_letterSeq)): max_letterSeq = current_letterSeq if (len(current_digitSeq) > len(max_digitSeq)): max_digitSeq = current_digitSeq return max_letterSeq, max_digitSeq str = 'Hello 459 Congratulations! 234' print(longSubstring(str))
आउटपुट
उपरोक्त कोड को चलाने से हमें निम्नलिखित परिणाम मिलते हैं -
('Congratulations', '459')