কম্পিউটার

C++-এ প্রতিটি অক্ষর ব্যবহার করে অন্য স্ট্রিং থেকে যে স্ট্রিং তৈরি করা যেতে পারে তার সংখ্যা


আমাদের দুটি স্ট্রিং দেওয়া হয়েছে যেমন str1 এবং str2 এবং কাজটি হল অন্য স্ট্রিং থেকে সম্পূর্ণরূপে তৈরি করা স্ট্রিংগুলির গণনা গণনা করা, তবে আমরা স্ট্রিং গঠনের জন্য একবার একটি অক্ষর ব্যবহার করতে পারি। যেমন, আমরা দুটি স্ট্রিং str1 এবং str2 নেব এবং str1-এর অক্ষরটি ঠিক একবার ব্যবহার করে str1-এ str2-এর উপস্থিতি পরীক্ষা করব।

ইনপুট − str_1 ="প্রযুক্তিগত শিক্ষা", str_2 ="শিক্ষা"

আউটপুট − স্ট্রিংগুলির সংখ্যা যা প্রতিটি অক্ষর ব্যবহার করে অন্য স্ট্রিং থেকে তৈরি করা যেতে পারে - 1

ব্যাখ্যা − আমরা দেখতে পাচ্ছি str_2 ঠিক একবার str_1 এ ঘটে। সুতরাং, str_2 এ str_1 এর গণনা হল 1।

ইনপুট − str_1 =“ellohsehelloabcoelhl, str_2 =“হ্যালো”

আউটপুট − স্ট্রিংগুলির সংখ্যা যা প্রতিটি অক্ষর ব্যবহার করে অন্য স্ট্রিং থেকে তৈরি করা যেতে পারে - 3

ব্যাখ্যা − যেহেতু আমরা দেখতে পাচ্ছি str_2 হ্যালো তাই আমরা ঠিক একবার str_1 এর অক্ষর ব্যবহার করে হ্যালো শব্দের গঠন পরীক্ষা করব। আমরা দেখতে পাচ্ছি, str_1-এ হ্যালো শব্দের 3টি গঠন রয়েছে তাই গণনা হল 3৷

নিম্নলিখিত প্রোগ্রামে ব্যবহৃত পদ্ধতি

  • স্ট্রিং str_1 এবং str_2 ইনপুট করুন এবং তাদের সংশ্লিষ্ট দৈর্ঘ্য গণনা করুন এবং আরও প্রক্রিয়াকরণের জন্য ফাংশনে ডেটা পাস করুন৷

  • str_1 এ str_2 এর গণনা সংরক্ষণ করতে একটি অস্থায়ী পরিবর্তনশীল গণনা ঘোষণা করুন এবং এটিকে INT_MAX দিয়ে আরম্ভ করুন। C++ এ INT_MAX ব্যবহার করা হয় একটি ভেরিয়েবল ধারণ করতে পারে এমন সর্বোচ্চ মান নির্দিষ্ট করতে এবং INT_MAX-এর মান হল +2147483647৷

  • 26 আকারের একটি অ্যারে তৈরি করুন কারণ আমাদের ইংরেজিতে 26টি বর্ণমালা রয়েছে এবং এটি 0 দিয়ে শুরু হয়৷

  • একটি স্ট্রিং str_1 এর দৈর্ঘ্য পর্যন্ত 0 থেকে FOR লুপ শুরু করুন এবং arr[str_1[i] - 'a'] 1 দ্বারা সেট করুন

  • একটি স্ট্রিং str_2 এর দৈর্ঘ্য পর্যন্ত 0 থেকে FOR আরেকটি লুপ শুরু করুন এবং সর্বনিম্ন গণনা বা arr[str_2[i] - 'a'] হিসাবে গণনা সেট করুন।

  • রিটার্ন গণনা

  • ফলাফল প্রিন্ট করুন।

উদাহরণ

#include <bits/stdc++.h>
using namespace std;
int atmost_once(string str_1, int len_str1, string str_2, int len_str2){
   int count = INT_MAX;
   int arr[26] = { 0 };
   for (int i = 0; i < len_str1 ; i++){
      arr[str_1[i] - 'a'] += 1;
   }
   for (int i = 0; i < len_str2; i++){
      count = min(count, arr[str_2[i] - 'a']);
   }
   return count;
}
int main(){
   string str_1 = "technical learning";
   int length_str1 = str_1.length();
   string str_2 = "learning";
   int length_str2 = str_2.length();
   cout<<"Count of strings that can be formed from another string using each character at-most
once are: "<<atmost_once(str_1,length_str1, str_2, length_str2);
   return 0;
}

আউটপুট

যদি আমরা উপরের কোডটি চালাই তবে এটি নিম্নলিখিত আউটপুট −

উৎপন্ন করবে
Count of strings that can be formed from another string using each character at-most once are: 1

  1. C++ এ একটি প্রদত্ত সংখ্যার সংখ্যা ব্যবহার করে তৈরি করা যেতে পারে এমন সর্বাধিক সংখ্যা খুঁজুন

  2. C++ এ তাদের ভ্যালেন্স সংখ্যা ব্যবহার করে 3টি পরমাণু থেকে একটি অণু তৈরি হতে পারে কিনা তা খুঁজুন

  3. C++ ব্যবহার করে একটি স্ট্রিং-এ একটি অতিরিক্ত অক্ষর খুঁজুন।

  4. পাইথনে প্রদত্ত সীমাবদ্ধতা ব্যবহার করে অন্য স্ট্রিং থেকে একটি স্ট্রিং তৈরি করা যায় কিনা তা পরীক্ষা করুন