Computer >> कंप्यूटर >  >> प्रोग्रामिंग >> प्रोग्रामिंग

प्रत्यय सरणी


किसी दिए गए स्ट्रिंग से, हम सभी संभव प्रत्यय प्राप्त कर सकते हैं। प्रत्ययों को शब्दावली क्रम में क्रमबद्ध करने के बाद, हम प्रत्यय सरणी प्राप्त कर सकते हैं। प्रत्यय सरणियों को प्रत्यय पेड़ों का उपयोग करके भी बनाया जा सकता है। प्रत्यय पेड़ों के डीएफएस ट्रैवर्सल का उपयोग करके, हम प्रत्यय सरणी प्राप्त कर सकते हैं। प्रत्यय सरणियाँ रैखिक समय में प्रत्यय खोजने में सहायक होती हैं। हम बाइनरी सर्च टाइप प्रक्रिया का उपयोग करके प्रत्यय सरणी का उपयोग करके सबस्ट्रिंग भी ढूंढ सकते हैं।

समय जटिलता O(m log n) है

इनपुट और आउटपुट

इनपुट:मुख्य स्ट्रिंग:"बनाना", पैटर्न:"नैन" आउटपुट:पैटर्न स्थिति पर मिला:2

एल्गोरिदम

fillSuffixArray (पाठ, प्रत्यय)

इनपुट: मुख्य स्ट्रिंग

आउटपुट: प्रत्ययों की सरणी

आरंभ n :=पाठ लंबाई प्रत्यय सरणी को सभी के रूप में परिभाषित करती है i के लिए आकार n का प्रत्यय :=0 से n-1, allSuffix[i].index :=i allSuffix[i].suff :=से टेक्स्ट का सबस्ट्रिंग करें ( i to end) suffArray.End में सभी प्रत्यय सरणी के सभी प्रत्यय सरणी स्टोर अनुक्रमणिका को सॉर्ट करें। 

प्रत्ययअरे खोज (पाठ, पैटर्न, प्रत्यय)

इनपुट: मुख्य स्ट्रिंग, पैटर्न और प्रत्यय सरणी

आउटपुट - वह स्थान जहाँ पैटर्न पाए जाते हैं

पेटलेन शुरू करें:=पैटर्न का आकार strLen:=टेक्स्ट का आकार बायां:=0 दाएं:=strLen -1 जबकि बाएं <=दाएं, मध्य करें:=बाएं + (दाएं-बाएं)/2 tempStr:=का सबस्ट्रिंग SuffArray [मध्य] से अंतिम परिणाम तक का पाठ:=पैटर्न लंबाई तक tempStr और पैटर्न की तुलना करें। यदि परिणाम =0 है, तो स्थान प्रिंट करें यदि रेस <0 है, तो दाएं:=मध्य -1 अन्य बाएं:=मध्य +1 किया गयाअंत

उदाहरण

#include#include#include namespace std का उपयोग करके; स्ट्रिंग suff;}; int strCompare (स्ट्रिंग st1, स्ट्रिंग st2, int n) {int i =0; जबकि (एन--) { अगर (st1 [i]! =st2 [i]) रिटर्न st1 [i] - st2 [i]; मैं++; } रिटर्न 0;}बूल कंप (प्रत्यय प्रत्यय 1, प्रत्यय प्रत्यय 2) {// छांटने के लिए दो तारों की तुलना करें अगर (सफ 1.सफ <सफ 2.सफ) सही है; झूठी वापसी;} शून्य भरण प्रत्ययअरे (स्ट्रिंग मेनस्ट्रिंग, int suffArr []) { int n =mainString.size (); प्रत्यय सभी प्रत्यय [एन]; // सरणी सभी प्रत्ययों को रखने के लिए (int i =0; i 

आउटपुट

पैटर्न स्थिति में मिला:2

  1. सरणी के उत्पाद के लिए सी कार्यक्रम

    n तत्वों की एक सरणी गिरफ्तारी [n] को देखते हुए, कार्य उस सरणी के सभी तत्वों के गुणनफल को खोजना है। जैसे हमारे पास 7 तत्वों की एक सरणी गिरफ्तारी [7] है, इसलिए इसका उत्पाद इस तरह होगा उदाहरण Input: arr[] = { 10, 20, 3, 4, 8 } Output: 19200 Explanation: 10 x 20 x 3 x 4 x 8 = 19200 Input: arr[] = { 1

  1. सी प्रोग्राम यह जांचने के लिए कि कोई ऐरे पालिंड्रोम है या नहीं

    किसी भी आकार n की arr [] सरणी को देखते हुए, हमारा कार्य यह पता लगाना है कि सरणी पैलिंड्रोम है या नहीं। पैलिंड्रोम एक अनुक्रम है जिसे पीछे और आगे की तरह पढ़ा जा सकता है, जैसे:मैडम, नमन, आदि। तो एक सरणी की जांच करने के लिए पैलिंड्रोम है या नहीं, इसलिए हम एक सरणी को पीछे और आगे से पार कर सकते हैं जैसे

  1. सी . में एक सरणी में श्रेणियों के उत्पाद

    एक इनपुट के रूप में सरणी, एल, आर, पी के साथ दिया गया है और कार्य मॉड्यूल के तहत उत्पाद के साथ एल और आर के बीच की श्रेणियों को आउटपुट के रूप में ढूंढना और इसे प्रदर्शित करना है जैसा कि चित्र में दिया गया है, हमारे पास तत्वों की सरणी है और L जो कि 2 के रूप में एक बायाँ मान है और R जो कि 2 के रूप में