2009-04-25 24 views
5

आप कृपया मेरी मदद कर सकते प्रत्येक घटनाखोजने सबस्ट्रिंग

उदाहरण 'क्यू' और 'ई' सभी घटनाओं में दिए गए उदाहरण क्रम में बीच सभी सबस्ट्रिंग पाने के लिए के लिए कम दो वर्णों के बीच सबस्ट्रिंग पाने के लिए:

ex: QUWESEADFQDFSAEDFS 

और न्यूनतम लंबाई के साथ सबस्ट्रिंग को खोजने के लिए।

+0

क्या आप कृपया अपने प्रश्न की समीक्षा कर सकते हैं और इसे थोड़ा पठनीय बना सकते हैं, और अधिक जानकारी भी प्रदान कर सकते हैं? धन्यवाद। – hyperboreean

उत्तर

16
import re 
DATA = "QUWESEADFQDFSAEDFS" 

# Get all the substrings between Q and E: 
substrings = re.findall(r'Q([^E]+)E', DATA) 
print "Substrings:", substrings 

# Sort by length, then the first one is the shortest: 
substrings.sort(key=lambda s: len(s)) 
print "Shortest substring:", substrings[0] 
7

RichieHindle सिवाय इसके कि

substrings.sort(key=len) 

कि अनावश्यक लैम्ब्डा ;-) की तुलना में यह व्यक्त करने के लिए एक बेहतर तरीका है सही यह है।

यदि आप पाइथन 2.5 या बाद में उपयोग कर रहे हैं, तो न्यूनतम (सबस्ट्रिंग्स, की = लेन) वास्तव में आपको सबसे छोटी स्ट्रिंग (सबसे पहले, अगर कई तारों को "सबसे छोटा" के लिए टाई जाती है) सॉर्टिंग से थोड़ा तेज और निश्चित रूप से [0] वें तत्व लेना। लेकिन अगर आप 2.4 या उससे पहले अटक गए हैं, तो रिची हिंडल का दृष्टिकोण सबसे अच्छा विकल्प है।

+0

लैम्ब्डा के बारे में अच्छा बिंदु - मैं क्या सोच रहा था? 8-) – RichieHindle

संबंधित मुद्दे