एक दी गई स्ट्रिंग अंकों और अक्षरों का मिश्रण हो सकती है। इस लेख में हमें सबसे बड़ा उपस्ट्रिंग ढूंढना है जिसमें अक्षर और अंक एक साथ हों।
re मॉड्यूल के साथ
नियमित अभिव्यक्ति मॉड्यूल का उपयोग अंकों या अक्षरों वाले सभी सतत उपस्ट्रिंग खोजने के लिए किया जा सकता है। फिर हम max फ़ंक्शन लागू करके केवल उन सतत उपस्ट्रिंग को चुनते हैं जिनमें अक्षर और अंक हैं और जिनकी लंबाई सभी उपस्ट्रिंग में अधिकतम है। findall फ़ंक्शन का उपयोग आवश्यक उपस्ट्रिंग की पहचान और प्राप्त करने के लिए भी किया जाता है।
उदाहरण
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')
len() और While Loop के साथ
यह एक सीधा लेकिन धीमा दृष्टिकोण है जिसमें हम while लूप डिज़ाइन करते हैं ताकि दी गई स्ट्रिंग में उपस्ट्रिंग के रूप में मौजूद अंकों और अक्षरों की लंबाई की जांच की जा सके। फिर हम उनकी लंबाई की तुलना करते हैं और केवल अधिकतम लंबाई वाले उपस्ट्रिंग चुनते हैं।
उदाहरण
def longSubstring(s):
max_letterSeq = ''
max_digitSeq = ''
i = 0
while i < len(s):
current_letterSeq = ''
current_digitSeq = ''
# अक्षर
while i < len(s) and s[i].isalpha():
current_letterSeq += s[i]
i += 1
# अंक
while i < len(s) and s[i].isdigit():
current_digitSeq += s[i]
i += 1
# जांचें यदि न तो अंक और न ही वर्णमाला
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')