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

C प्रोग्राम में दिए गए स्ट्रिंग का सबसे लंबा प्रीफिक्स प्रिंट करना जो उसी स्ट्रिंग का सफिक्स भी हो


एक स्ट्रिंग दी गई है जिसमें हमें जांचना है कि सबसे लंबे प्रीफिक्स की लंबाई क्या है जो स्ट्रिंग का सफिक्स भी है। जैसे "abcab" स्ट्रिंग है तो यहां "ab" लंबाई 2 का है और वही प्रीफिक्स और सफिक्स वाला सबसे लंबा सबस्ट्रिंग है।

उदाहरण

इनपुट: str[] = {"aabbccdaabbcc"}
आउटपुट: 6

इनपुट: abdab
आउटपुट: 2

यदि हम पॉइंटर को स्ट्रिंग के शुरुआत और अंत से शुरू करेंगे तो वे किसी बिंदु पर ओवरलैप हो जाएंगे। इसके बजाय हम स्ट्रिंग को बीच से तोड़ेंगे और लेफ्ट और राइट स्ट्रिंग का मिलान शुरू करेंगे। यदि वे समान हैं तो मिली किसी एक स्ट्रिंग का आकार लौटाएं अन्यथा दोनों तरफ छोटी लंबाई के लिए प्रयास करें।

एल्गोरिदम

int longest(char str[], int n)
शुरुआत
चरण 1: length को 0 और i को n/2 घोषित करें
चरण 2: यदि n < 2 तो 1 रिटर्न करें
चरण 3: जब तक str[i] != '\0' लूप
   यदि str[i] == str[length] तो
      length++ और i++ बढ़ाएं
   अन्यथा
      यदि length == 0 तो i++ बढ़ाएं
      अन्यथा length-- घटाएं
   समाप्त यदि
लूप समाप्त
length रिटर्न करें
समाप्त

उदाहरण

#include <stdio.h>
int longest(char str[], int n){
    int length = 0, i = n/2;
    if( n < 2 )
        return 1;
    while( str[i] != '\0' ){
        // जब हमें सफिक्स में प्रीफिक्स जैसा कैरेक्टर मिलता है,
        // हम length और i को बढ़ाकर समान प्रीफिक्स और सफिक्स की लंबाई गिनेंगे
        if (str[i] == str[length]){
            ++length;
            ++i;
        } else {
            if(length == 0)
                ++i;
            else
                --length;
        }
    }
    return length;
}
int main(int argc, char const *argv[]){
    char str[] = {"abccmmabcc"};
    int n = sizeof(str)/sizeof(str[0]);
    int length = longest(str, n);
    printf("Length = %d", length);
    return 0;
}

आउटपुट

यदि हम उपरोक्त प्रोग्राम चलाते हैं तो यह निम्नलिखित आउटपुट उत्पन्न करेगा:

Length = 4

  1. पायथन प्रोग्राम: दी गई स्ट्रिंग के सभी क्रमपरिवर्तन प्रिंट करें पायथन प्रोग्राम: दी गई स्ट्रिंग के सभी क्रमपरिवर्तन प्रिंट करें

    इस लेख में हम दी गई समस्या के समाधान के बारे में जानेंगे। समस्या कथन हमें एक स्ट्रिंग दी गई है, हमें स्ट्रिंग के सभी संभावित क्रमपरिवर्तन प्रदर्शित करने हैं। उदाहरण # रूपांतरण def toString(List): return .join(List) # क्रमपरिवर्तन def permute(a, l, r): if l == r: print(toString(a))

  1. पायथन प्रोग्राम: स्ट्रिंग में इवन लेंथ वाले शब्द प्रिंट करें पायथन प्रोग्राम: स्ट्रिंग में इवन लेंथ वाले शब्द प्रिंट करें

    इस लेख में, हम दिए गए प्रॉब्लम स्टेटमेंट को हल करने के समाधान और दृष्टिकोण के बारे में सीखेंगे। प्रॉब्लम स्टेटमेंट एक स्ट्रिंग दिए जाने पर, हमें स्ट्रिंग में इवन लेंथ वाले सभी शब्दों को प्रदर्शित करने की आवश्यकता है। दृष्टिकोण split() फ़ंक्शन का उपयोग करके इनपुट स्ट्रिंग को विभाजित करें। for लूप

  1. पायथन प्रोग्राम: जांचें कि दी गई स्ट्रिंग पैंग्राम है या नहीं पायथन प्रोग्राम: जांचें कि दी गई स्ट्रिंग पैंग्राम है या नहीं

    इस लेख में, हम दिए गए प्रॉब्लम स्टेटमेंट को हल करने के समाधान और दृष्टिकोण के बारे में सीखेंगे। प्रॉब्लम स्टेटमेंट एक स्ट्रिंग इनपुट दिए जाने पर, हमें यह जांचने के लिए एक पायथन प्रोग्राम जनरेट करना होगा कि वह स्ट्रिंग पैंग्राम है या नहीं। एक पैंग्राम एक वाक्य/शब्दों की श्रृंखला है जिसमें अंग्रेजी