मैं जावास्क्रिप्ट में लागू एक स्ट्रिंग के भीतर सबसे लंबी दोहराव वाली स्ट्रिंग और नियमित अभिव्यक्ति आधारित दृष्टिकोण का उपयोग करना चाहता हूं।नियमित अभिव्यक्तियों का उपयोग करके जावास्क्रिप्ट में सबसे लंबे समय तक दोहराने वाले सबस्ट्रिंग का पता लगाएं
मेरे पास एक PHP कार्यान्वयन है, जो सीधे जावास्क्रिप्ट पर पोर्ट किया जाता है, काम नहीं करता है।
पीएचपी कार्यान्वयन सवाल "Find longest repeating strings?" के जवाब से लिया जाता है:
preg_match_all('/(?=((.+)(?:.*?\2)+))/s', $input, $matches, PREG_SET_ORDER);
यह $matches[0][X]
से स्थापित हो जाएगा सबसे लंबे समय तक दोहराए जाने-स्ट्रिंग के साथ $input
में पाया जा सकता है (जहां X
$matches[0]
की लंबाई है)। मैंने कई इनपुट तारों के साथ इसका परीक्षण किया है और मुझे विश्वास है कि आउटपुट सही है।
जावास्क्रिप्ट में निकटतम प्रत्यक्ष बंदरगाह है:
var matches = /(?=((.+)(?:.*?\2)+))/.exec(input);
यह सही परिणाम
input Excepted result matches[0][X] ====================================================== inputinput input input 7inputinput input input inputinput7 input input 7inputinput7 input 7 XXinputinputYY input XX
मैं नियमित अभिव्यक्ति के साथ पर्याप्त परिचित नहीं कर रहा हूँ समझने के लिए नियमित अभिव्यक्ति यहां इस्तेमाल नहीं देता कर रहा है।
निश्चित रूप से एल्गोरिदम हैं जो मैं सबसे लंबे समय तक दोहराने वाले सबस्ट्रिंग को खोजने के लिए कार्यान्वित कर सकता हूं। ऐसा करने से पहले, मुझे आशा है कि एक अलग नियमित अभिव्यक्ति जावास्क्रिप्ट में सही परिणाम देगा।
क्या उपरोक्त नियमित अभिव्यक्ति को संशोधित किया जा सकता है कि अपेक्षित आउटपुट जावास्क्रिप्ट में वापस आ गया है? मैं स्वीकार करता हूं कि यह एक लाइनर में संभव नहीं हो सकता है।