मेरे पास सबस्ट्रिंग का एक बड़ा संग्रह है। उदाहरण के लिए एक लाख तार जैसे:

["abc", "bane", "cadb" ... "one", "mno" ... "zz", "zzz"]

मैं यह जानना चाहता हूं कि इनमें से कौन से सबस्ट्रिंग प्रत्येक इनपुट स्ट्रिंग में शामिल हैं। उदाहरण के लिए जैसे तार:

"abcdefg hijklmnop" (contains "abc", "mno")
"something one, another two, and zzz" (contains "one", "zz", "zzz")
"однажды в студеную зимнюю пору" (contains nothing)

यह लाखों सबस्ट्रिंग के विरुद्ध लाखों इनपुट स्ट्रिंग्स की खोज है। सभी मेल खाने वाले सबस्ट्रिंग्स को ढूंढना महत्वपूर्ण है, यहां तक ​​​​कि अतिव्यापी भी। ऐसी खोज के लिए सबसे कारगर तरीका क्या होगा?

मुझे लगता है कि मैं एक ट्रिग्राम डेटाबेस बना सकता हूं, इनपुट और सबस्ट्रिंग्स में मिलान करने वाले ट्रिग्राम ढूंढ सकता हूं, और फिर परिणामस्वरूप छोटे डेटासेट के खिलाफ धीमी मिलान वाली एल्गोरिदम का उपयोग कर सकता हूं। लेकिन क्या कोई बेहतर तरीका हो सकता है?

0
dimus 19 अक्टूबर 2020, 02:46

1 उत्तर

सबसे बढ़िया उत्तर