কম্পিউটার

C++ এ একটি স্ট্রিং-এর অনন্য পরবর্তী সংখ্যা গণনা করার জন্য প্রোগ্রাম


ধরুন আমাদের একটি স্ট্রিং s আছে, আমাদের s-এর অ-খালি অনন্য অনুক্রমের সংখ্যা খুঁজে বের করতে হবে। যদি উত্তরটি খুব বড় হয় তবে ফলাফলটি 10^9 + 7 দ্বারা পরিবর্তন করুন।

সুতরাং, যদি ইনপুটটি s ="xxy" এর মতো হয়, তাহলে আউটপুট হবে 5, কারণ পাঁচটি অনুসৃতি রয়েছে:"x", "xx", "xy", "y" এবং "xxy"।

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

  • m :=10^9 + 7

  • n :=s

    এর আকার
  • 26 আকারের একটি অ্যারে টেবিল সংজ্ঞায়িত করুন

  • res :=0

  • আরম্ভ করার জন্য i :=1, যখন i <=n, আপডেট (i 1 দ্বারা বাড়ান), do−

    • c :=s[i − 1] − 'a'

      এর ASCII
    • curr :=(res + 1 − table[c] + m) mod m

    • res :=(res + curr) mod m

    • টেবিল[c] :=(টেবিল[c] + curr) mod m

  • রিটার্ন রিটার্ন

আরো ভালোভাবে বোঝার জন্য আসুন নিচের বাস্তবায়ন দেখি -

উদাহরণ

#include <bits/stdc++.h>
using namespace std;
const int m = 1e9 + 7;
int solve(string s) {
   int n = s.size();
   vector<int> table(26);
   long long res = 0;
   for (int i = 1; i <= n; ++i) {
      int c = s[i − 1] − 'a';
      int curr = (res + 1 − table[c] + m) % m;
      res = (res + curr) % m;
      table[c] = (table[c] + curr) % m;
   }
   return res;
}
int main(){
   string s = "xxy";
   cout << solve(s);
}

ইনপুট

"xxy"

আউটপুট

5

  1. C++ প্রোগ্রাম ভালো স্ট্রিং পেতে অক্ষরের সংখ্যা গণনা করতে হবে

  2. C++ প্রোগ্রাম ন্যূনতম সংখ্যক ক্রিয়াকলাপ গণনা করে যা সংখ্যা n থেকে 1 করতে হবে

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

  4. ডোডেকাগনের সংখ্যা গণনা করার জন্য C++ প্রোগ্রাম আমরা d এর আকার তৈরি করতে পারি