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

सी ++ में इसके सभी प्रत्ययों के साथ स्ट्रिंग की समानता का योग

इस समस्या में हमें string str दिया जाता है। हमारा काम स्ट्रिंग के सभी प्रत्ययों के साथ समानता का योग खोजने के लिए एक प्रोग्राम बनाना है।

स्ट्रिंग स्ट्र के प्रत्यय वे सभी स्ट्रिंग हैं जो स्ट्रिंग के शुरुआती वर्णों को हटाकर बनाए जाते हैं।

स्ट्रिंग की समानताएं str1 और str2 दोनों स्ट्रिंग के लिए सामान्य सबसे लंबे उपसर्ग की लंबाई है। उदाहरण के लिए, str1 ='abbac' और str2 ='abb' 3 है।

जबकि str1 ='abca' और str2 ='ca' 0 है। जैसा कि हम शुरू से ही गिनते हैं।

समस्या को समझने के लिए एक उदाहरण लेते हैं,

इनपुट - str ='xyxyx'

आउटपुट -

स्पष्टीकरण − सभी प्रत्यय के साथ स्ट्रिंग के सभी सबस्ट्रिंग और समानताएं हैं -

‘xyxyx’ -> 5
‘yxyx’ -> 0
‘xyx’ -> 3
‘yx’ -> 0
‘x’ -> 1
Sum = 5 + 0 + 3 + 0 + 1 = 9

इस समस्या को हल करने के लिए, हम Z-एल्गोरिदम का उपयोग करेंगे और Z-सरणी की गणना करेंगे। जेड-सरणी स्ट्रिंग की लंबाई के बराबर लंबाई की एक सरणी है। प्रत्येक तत्व str का उपसर्ग संग्रहीत करता है। नीचे दिया गया कार्यक्रम कार्यान्वयन दिखाता है,

उदाहरण

#include <bits/stdc++.h>
using namespace std;
void createZArray(string str, int n, int Zarray[]) {
   int L, R, k;
   L = R = 0;
   for (int i = 1; i < n; ++i) {
      if (i > R) {
         L = R = i;
         while (R < n && str[R - L] == str[R])
            R++;
         Zarray[i] = R - L;
         R--;
      }
      else {
         k = i - L;
         if (Zarray[k] < R - i + 1)
         Zarray[i] = Zarray[k];
         else {
            L = i;
            while (R < n && str[R - L] == str[R])
            R++;
            Zarray[i] = R - L;
            R--;
         }
      }
   }
}
int calSumSimilarities(string s, int n) {
   int Zarray[n] = { 0 };
   createZArray(s, n, Zarray);
   int total = n;
   for (int i = 1; i < n; i++)
      total += Zarray[i];
   return total;
}
int main() {
   string s = "xyxyx";
   int n = s.length();
   cout<<"Sum of similarities of string with all of its suffixes is "<<calSumSimilarities(s, n);
   return 0;
}

आउटपुट

Sum of similarities of string with all of its suffixes is 9
. है
  1. C++ में दिए गए योग के साथ सभी जोड़ियों को प्रिंट करें

    इस समस्या में, हमें पूर्णांकों की एक सरणी और एक पूर्णांक योग दिया जाता है और हमें पूर्णांकों के उन सभी युग्मों को प्रिंट करना होता है जिनका योग योग मान के बराबर होता है। समस्या को समझने के लिए एक उदाहरण लेते हैं: इनपुट − सरणी ={1, 6, -2, 3} योग =4 आउटपुट - (1, 3) , (6, -2) यहां, हमें दिए गए योग म

  1. C++ में एक स्ट्रिंग के सभी पैलिंड्रोम क्रमपरिवर्तन प्रिंट करें

    इस समस्या में, हमें एक स्ट्रिंग दी जाती है और हमें उन सभी पैलिंड्रोमिक क्रमपरिवर्तनों को प्रिंट करना होता है जो उस स्ट्रिंग के वर्णों से संभव होते हैं। आइए समस्या को समझने के लिए एक उदाहरण लेते हैं - इनपुट − स्ट्रिंग =आब आउटपुट - अब्बा बाबा इस समस्या को हल करने के लिए हमें स्ट्रिंग के वर्णों को

  1. C++ में वर्णों की पुनरावृत्ति के साथ सभी क्रमपरिवर्तन प्रिंट करें

    इस समस्या में, हमें n वर्णों की एक स्ट्रिंग दी जाती है और हमें स्ट्रिंग के वर्णों के सभी क्रमपरिवर्तन मुद्रित करने होते हैं। स्ट्रिंग के वर्णों को दोहराने की अनुमति है। क्रमपरिवर्तन का मुद्रण वर्णानुक्रम में किया जाना चाहिए (शब्दकोशीय रूप से क्रमबद्ध क्रम)। आइए विषय को बेहतर ढंग से समझने के लिए एक