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

C++ प्रोग्राम: समान टेक्स्ट को बार-बार खोजना (डेटा स्ट्रक्चर बनाकर)


यह एक ही टेक्स्ट को बार-बार खोजने के लिए एक C++ प्रोग्राम है।

एल्गोरिदम

Begin
    मूल स्ट्रिंग और खोजे जाने वाले पैटर्न को इनपुट के रूप में लें।
    org_len = मूल स्ट्रिंग की लंबाई स्टोर करें
    pat_len = पैटर्न की लंबाई स्टोर करें
    for i = 0 से (org_len - pat_len) तक
        for j = 0 से pat_len - 1 तक
            यदि (org[i + j] != patt[j]) तो ब्रेक
            यदि (j == pat_len) तो
                m बढ़ाएं।
                पैटर्न मिलने की स्थिति प्रिंट करें
    यदि (m == 0) तो
        कोई मैच नहीं मिला प्रिंट करें
    अन्यथा
        मिले कुल इंस्टेंसेस की संख्या प्रिंट करें।
    return 0
End

उदाहरण

#include <iostream>
#include <string.h>
using namespace std;

int main() {
    char org[150], patt[150];
    int i, j, m = 0, org_len, pat_len;
    
    cout << "\nEnter Original String: ";
    cin >> org;
    cout << "Enter Pattern to Search: ";
    cin >> patt;
    
    org_len = strlen(org); // मूल स्ट्रिंग की लंबाई स्टोर करें
    pat_len = strlen(patt); // पैटर्न की लंबाई स्टोर करें
    
    for(i = 0; i <= (org_len - pat_len); i++) {
        for(j = 0; j < pat_len; j++) {
            if(org[i + j] != patt[j])
                break;
        }
        if(j == pat_len) {
            m++;
            cout << "\nPattern Found at Position: " << i;
        }
    }
    
    if(m == 0)
        cout << "\nNo Match Found.";
    else
        cout << "\nTotal Number of Instances Found = " << m;
    
    return 0;
}

आउटपुट

Enter Original String: thisistutorialspoint.thisisac++program
Enter Pattern to Search: is
Pattern Found at Position: 2
Pattern Found at Position: 4
Pattern Found at Position: 23
Pattern Found at Position: 25
Total Number of Instances Found = 4

यह नैव स्ट्रिंग मैचिंग एल्गोरिदम (ब्रूट फोर्स) है जिसकी समय जटिलता O(n*m) है जहां n टेक्स्ट लंबाई है और m पैटर्न लंबाई है। बार-बार खोज के लिए, KMP, बॉयर-मूर, या सफिक्स ट्री/सफिक्स ऐरे जैसे डेटा स्ट्रक्चर्स अधिक कुशल होते हैं। शीर्षक "डेटा स्ट्रक्चर बनाकर" का सुझाव देता है लेकिन कार्यान्वयन नैव दृष्टिकोण का उपयोग करता है।

  1. C++ में त्रिभुज के केंद्रक (Centroid) ज्ञात करने का प्रोग्राम C++ में त्रिभुज के केंद्रक (Centroid) ज्ञात करने का प्रोग्राम

    इस समस्या में, हमें एक 2D ऐरे दिया गया है जो त्रिभुज के तीन शीर्षों के निर्देशांक को दर्शाता है। हमारा कार्य C++ में त्रिभुज के केंद्रक (Centroid) ज्ञात करने का प्रोग्राम बनाना है।केंद्रक (Centroid) त्रिभुज का वह बिंदु है जहां त्रिभुज की तीनों मध्यिकाएं (medians) प्रतिच्छेद करती हैं।मध्यिका (Median)

  1. C++ में बाइनरी खोज प्रोग्राम C++ में बाइनरी खोज प्रोग्राम

    बाइनरी खोज क्या है? बाइनरी खोज (आधा-अंतराल खोज) एक खोज एल्गोरिदम है जो क्रमबद्ध सरणी में लक्ष्य मान की स्थिति ढूंढता है। यह लक्ष्य मान की तुलना मध्य तत्व से करता है और खोज स्थान को आधा कर देता है। मुख्य बिंदु केवल क्रमबद्ध सरणी पर काम करता है समय जटिलता: O(log n) दुनिया के सभी नाम क्रमबद्ध हों तो

  1. C++ में ट्री बनाए बिना समान BST की जांच C++ में ट्री बनाए बिना समान BST की जांच

    हमारे पास BST के तत्वों को दर्शाने के लिए दो सरणियां हैं। यदि हम उस सरणी से तत्वों को बाएं से दाएं लेते हैं, और BST बनाते हैं, तो दोनों सरणियों से लेने पर, हम वही BST बनाएंगे। हमें जांचना है कि दोनों वही बना रहे हैं या नहीं। लेकिन बाधा यह है कि हम BST नहीं बना सकते। मान लीजिए दो सरणियां {2, 4, 1, 3}