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

सी ++ में रैपराउंड स्ट्रिंग में अद्वितीय सबस्ट्रिंग्स


मान लीजिए कि हमारे पास "abcdefghijklmnopqrstuvwxyz" की अनंत रैपराउंड स्ट्रिंग है, तो मान s इस तरह दिखेगा - "...zabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcd....".

अब हमारे पास एक और स्ट्रिंग p है। हमारा काम यह पता लगाना है कि s में p के कितने अनूठे गैर-रिक्त सबस्ट्रिंग मौजूद हैं। विशेष रूप से, हमारा इनपुट स्ट्रिंग p है और हमें स्ट्रिंग s में p के विभिन्न गैर-रिक्त सबस्ट्रिंग की संख्या को आउटपुट करने की आवश्यकता है।

इसलिए यदि इनपुट "ज़ैब" की तरह है तो आउटपुट 6 होगा। स्ट्रिंग "ज़ैब" के 6 सबस्ट्रिंग "जेड", "ए", "बी", "ज़ा", "एबी", "ज़ैब" हैं। स्ट्रिंग एस

इसे हल करने के लिए, हम इन चरणों का पालन करेंगे -

  • 26 आकार की एक सरणी dp बनाएँ, x :=0 सेट करें

  • I के लिए 0 से p के आकार की सीमा में

    • अगर i> 0 और (p[i] – p[i – 1] 1 है या p[i – 1] – p[i] 25 है), तो x को 1 से बढ़ाएं, अन्यथा x सेट करें:=1

    • dp[p[i] - 'a' का ASCII] :=अधिकतम (x, dp[p[i] - 'a' का ASCII])

  • रिट:=0

  • I के लिए 0 से 25 की सीमा में

    • रिट:=रिट + डीपी[i]

  • वापसी रिट

उदाहरण (C++)

आइए हम इसे बेहतर ढंग से समझने के लिए निम्नलिखित कार्यान्वयन को देखें -

#include <bits/stdc++.h>
using namespace std;
class Solution {
public:
   int findSubstringInWraproundString(string p) {
      vector <int> dp(26);
      int x = 0;
      for(int i = 0; i < p.size(); i++){
         if(i > 0 && (p[i] - p[i - 1] == 1 || p[i - 1] - p[i] == 25)){
            x++;
         }
         else x = 1;
            dp[p[i] - 'a'] = max(x, dp[p[i] - 'a']);
      }
      int ret = 0;
      for(int i = 0; i < 26; i++){
         ret += dp[i];
      }
      return ret;
   }
};
main(){
   Solution ob;
   cout << (ob.findSubstringInWraproundString("zab"));
}

इनपुट

"zab"

आउटपुट

6

  1. सी ++ कोड संख्यात्मक स्ट्रिंग के भी सबस्ट्रिंग की संख्या की गणना करने के लिए

    मान लीजिए कि हमारे पास n अंकों के साथ एक स्ट्रिंग S है। S का एक विकल्प तब भी कहा जाता है जब इस स्ट्रिंग द्वारा प्रदर्शित संख्या भी सम हो। हमें S के सम सबस्ट्रिंग की संख्या ज्ञात करनी है। इसलिए, यदि इनपुट S =1234 जैसा है, तो आउटपुट 6 होगा, क्योंकि सबस्ट्रिंग 2, 4, 12,34, 234, 1234 हैं। इसे हल करने

  1. C++ में पूर्णांकों की एक स्ट्रिंग में 6 से विभाज्य सबस्ट्रिंग की संख्या

    हम एक समस्या को देखेंगे जिसमें हमें एक पूर्णांक स्ट्रिंग दी गई है और यह निर्धारित करना होगा कि पूर्णांक प्रारूप में कितने सबस्ट्रिंग 6 से विभाज्य हैं। यह ध्यान दिया जाना चाहिए कि इनपुट संख्याओं (पूर्णांक) से बने स्ट्रिंग के रूप में है। फिर भी, विभाज्यता जांच इसे केवल एक पूर्णांक के रूप में मानते हुए

  1. C++ का उपयोग करके एक स्ट्रिंग के सबस्ट्रिंग की संख्या ज्ञात करें

    इस लेख में, आप किसी दिए गए स्ट्रिंग में बनाए जा सकने वाले सबस्ट्रिंग (गैर-रिक्त) की संख्या को खोजने के तरीकों के बारे में जानेंगे। Input : string = “moon” Output : 10 Explanation: Substrings are ‘m’, ‘o’, ‘o’, ‘n’, ‘mo’, &lsqu