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

C++ प्रोग्राम: वेक्टर्स का उपयोग करके स्ट्रिंग मैचिंग लागू करना

यह एक और स्ट्रिंग मैचिंग विधि है। इस दृष्टिकोण में, हम वेक्टर्स का उपयोग करके सबस्ट्रिंग खोज रहे हैं।

C++ में हम मानक पुस्तकालय का उपयोग करके आसानी से वेक्टर्स बना सकते हैं। हम मुख्य स्ट्रिंग और खोजी जाने वाली स्ट्रिंग को एक वेक्टर के रूप में ले रहे हैं, फिर इसे मुख्य स्ट्रिंग में खोज रहे हैं। जब एक मैच मिल जाता है तो फंक्शन पता लौटाता है, और इसे मुख्य स्ट्रिंग से हटा देता है। इसलिए अगले इटरेशन में, यह स्थान 0 से शुरू होता है और फिर से खोजता है।

कई घटनाओं के लिए, हम लूप्स का उपयोग कर रहे हैं और बार-बार मैच खोज रहे हैं, और स्थिति लौटाते हैं।

Input: Main String: "ABAAABCDBBABCDDEBCABC", Pattern "ABC"
Output: Pattern found at position: 4
Pattern found at position: 10
Pattern found at position: 18

एल्गोरिदम

vector_pattern_search(main, substr)

इनपुट - मुख्य टेक्स्ट और सबस्ट्रिंग।

आउटपुट - वह स्थान जहां पैटर्न मिले हैं

Begin
    p := मुख्य स्ट्रिंग का प्रारंभिक बिंदु
    while r सबस्ट्रिंग के अंत पर नहीं है और p मुख्य के अंत पर नहीं है, do
        r := सबस्ट्रिंग का प्रारंभ
        while स्थिति p और r पर आइटम समान नहीं हैं, और p मुख्य में है, do
            p := p + 1
            i := i + 1
        done
        q := p
        while स्थिति p और r पर आइटम समान हैं, और r सबस्ट्रिंग में है और p मुख्य में है, do
            p := p + 1
            i := i + 1
            r := r + 1
        done
        if r सबस्ट्रिंग से अधिक है, तो
            मुख्य से सबस्ट्रिंग की पहली घटना हटाएं
            वह स्थिति लौटाएं जहां सबस्ट्रिंग मिला
        if p मुख्य स्ट्रिंग से अधिक है, तो
            0 लौटाएं
            q := q + 1
            p := q
    done
End

उदाहरण कोड

#include <iostream>
#include <string>
#include <vector>
using namespace std;

void take_string(vector<char> &string){
    char c;
    while(true){
        c = getchar();
        if(c == '\n'){
            break;
        }
        string.push_back(c);
    }
}

void display(vector<char> string){
    for(int i = 0; i= substr.end()){
            main.erase(main.begin(), q + 1);
            return (i - substr.size() + 1);
        }
        if (p >= main.end())
            return 0;
        p = ++q;
    }
}

आउटपुट

Enter main String: C++ is programming language. It is object oriented language
Enter substring to find: language
Match found at Position = 20
Match found at Position = 52
  1. - C++ प्रोग्राम: लिंक्ड लिस्ट का उपयोग करके स्टैक कार्यान्वयन

    स्टैक डेटा संरचना स्टैक LIFO (Last In First Out) सिद्धांत का पालन करता है - अंत में डाला गया तत्व पहले निकाला जाता है। मुख्य ऑपरेशन: Push, Pop, Peek। लिंक्ड लिस्ट आधारित स्टैक कार्यान्वयन next; } } cout << endl; } int main() { int ch, val; cout << 1) Push in st

  1. - C++ प्रोग्राम: ऐरे का उपयोग करके स्टैक कार्यान्वयन

    ऐरे आधारित स्टैक निश्चित आकार की सरणी और top सूचकांक का उपयोग करके स्टैक कार्यान्वयन। LIFO सिद्धांत का पालन करता है। C++ प्रोग्राम उदाहरण = MAX - 1) cout << Stack Overflow << endl; else { top++; stack[top] = val; } } void pop() { if (top = 0; i--)

  1. - C++ में रिकर्सन का उपयोग करके वाक्य को उल्टा करने का प्रोग्राम

    एक स्ट्रिंग एक एक-आयामी कैरेक्टर सरणी है जो नल कैरेक्टर द्वारा समाप्त होती है। एक स्ट्रिंग का उल्टा वही स्ट्रिंग विपरीत क्रम में होता है। उदाहरण के लिए। मूल स्ट्रिंग: Apple is red उल्टी स्ट्रिंग: der si elppA एक प्रोग्राम जो स्ट्रिंग के रूप में वाक्य को रिकर्सन का उपयोग करके उल्टा करता है, निम्नलिखि