কম্পিউটার

C++-এ Wraparound স্ট্রিং-এ অনন্য সাবস্ট্রিং


ধরুন আমাদের কাছে "abcdefghijklmnopqrstuvwxyz" এর অসীম মোড়কের স্ট্রিং s আছে, তাহলে s এর মান এইরকম হবে − "...zabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvcdwxyz"... পি>

এখন আমরা আরেকটি স্ট্রিং পি আছে. আমাদের কাজ হল p-এর কতগুলি অনন্য নন-খালি সাবস্ট্রিং s-এ উপস্থিত রয়েছে তা খুঁজে বের করা। বিশেষ করে, আমাদের ইনপুট হল p স্ট্রিং এবং আমাদের স্ট্রিং s-এ p এর বিভিন্ন অ-খালি সাবস্ট্রিংগুলির সংখ্যা আউটপুট করতে হবে।

সুতরাং ইনপুট যদি “zab” এর মত হয় তাহলে আউটপুট হবে 6। স্ট্রিং “z”, “a”, “b”, “za”, “ab”, “zab” এর মধ্যে 6 টি সাবস্ট্রিং আছে। স্ট্রিং s

এটি সমাধান করতে, আমরা এই পদক্ষেপগুলি অনুসরণ করব -

  • 26 আকারের একটি অ্যারে ডিপি তৈরি করুন, x :=0

    সেট করুন
  • আমি 0 থেকে p

    এর পরিসরে
    • যদি i> 0 এবং (p[i] – p[i – 1] হয় 1 বা p[i – 1] – p[i] হয় 25), তাহলে x বাড়ান 1, অন্যথায় x :=1

    • dp[p[i] – ASCII of 'a'] :=সর্বাধিক (x, dp[p[i] - 'a'] এর ASCII)

  • ret :=0

  • আমি 0 থেকে 25 রেঞ্জের জন্য

    • ret :=ret + dp[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. জাভাস্ক্রিপ্টে বৃত্তাকার স্ট্রিং-এ অনন্য সাবস্ট্রিং

  2. সাংখ্যিক স্ট্রিং এর জোড় সাবস্ট্রিং সংখ্যা গণনা করতে C++ কোড

  3. C++ এ পূর্ণসংখ্যার একটি স্ট্রিংয়ে 6 দ্বারা বিভাজ্য সাবস্ট্রিংয়ের সংখ্যা

  4. C++ ব্যবহার করে একটি স্ট্রিং এর সাবস্ট্রিং এর সংখ্যা খুঁজুন