ধরা যাক আমাদের দুটি স্ট্রিং 'a' এবং 'b' এবং একটি স্ট্রিং 'মার্জ' আছে। কাজটি হল 'a' এবং 'b'-এর অক্ষর দিয়ে স্ট্রিং 'merge' পূরণ করা যাতে,
- যদি স্ট্রিং 'a' খালি না হয়, তাহলে স্ট্রিং 'a' থেকে প্রথম অক্ষরটি সরিয়ে স্ট্রিং 'মার্জ'-এ কপি করুন।
- যদি স্ট্রিং 'b' খালি না হয়, তাহলে 'b' স্ট্রিং থেকে প্রথম অক্ষরটি সরিয়ে 'মার্জ' স্ট্রিং-এ কপি করুন।
- যদি স্ট্রিং 'a' এবং 'b' খালি না হয়, তাহলে স্ট্রিং 'a' থেকে প্রথম অক্ষরগুলি সরিয়ে ফেলুন এবং স্ট্রিং 'মার্জ'-এ অনুলিপি করুন এবং তারপর 'b' স্ট্রিং থেকে প্রথম অক্ষর (যদি থাকে) সরিয়ে দিন ' এবং 'মার্জ' স্ট্রিং-এ কপি করুন।
- উভয় স্ট্রিং থেকে অক্ষরগুলিকে অভিধানিকভাবে সরান, যার মানে, যদি স্ট্রিং 'a' স্ট্রিং 'b' থেকে বড় হয়, তাহলে স্ট্রিং 'a' থেকে অক্ষরটি সরিয়ে তারপর স্ট্রিং 'b'।
- 'মার্জ' স্ট্রিংটি ফেরত দিন।
উদাহরণস্বরূপ
ইনপুট-1:
a = “bacaa”b = “abcaa”
আউটপুট:
babcacaaaa
ব্যাখ্যা:
যেহেতু প্রদত্ত স্ট্রিং 'a' স্ট্রিং 'b' থেকে অভিধানগতভাবে বড়, তাই আমরা স্ট্রিং 'a' থেকে প্রথম অক্ষরটি বের করব, অর্থাৎ, "b" এবং তারপর স্ট্রিং 'b' থেকে। এক্সট্র্যাক্ট করার পরে, স্ট্রিংটি হবে "babcacaaaa"৷
৷এই সমস্যা সমাধানের পদ্ধতি
এই সমস্যাটি সমাধানের জন্য পুনরাবৃত্তিমূলক পদ্ধতি হল যে আমরা স্ট্রিং 'a' এবং স্ট্রিং 'b' এর প্রতিটি অক্ষর বের করব এবং পরীক্ষা করব যে স্ট্রিং 'a'-এর অক্ষরগুলি অন্য স্ট্রিং থেকে অভিধানগতভাবে বড় এবং অবশেষে স্ট্রিং 'মার্জ'-এর সাথে সংযুক্ত হবে। .
আমরা প্রতিটি অক্ষরের সাবস্ট্রিংকে বেশ কয়েকটি অবস্থানের পরে খুঁজে পাব এবং 'মার্জ'-এ সংযুক্ত করব যদি এটি অন্য স্ট্রিং থেকে অভিধানগতভাবে বড় হয়।
- দুটি ইনপুট স্ট্রিং 'a' এবং 'b' নিন।
- একটি পুনরাবৃত্ত স্ট্রিং ফাংশন concatenateLargest(string a, string b) ইনপুট হিসাবে দুটি স্ট্রিং নেয় এবং কনক্যাটেনেশনের পরে সবচেয়ে বড় স্ট্রিং প্রদান করে, যেমন, (স্ট্রিং 'a' + স্ট্রিং 'b')।
- যদি উভয় স্ট্রিং খালি থাকে, তাহলে স্ট্রিং 'a' + স্ট্রিং 'b' ফেরত দিন।
- যদি স্ট্রিং 'a' স্ট্রিং 'b'-এর থেকে কম বা সমান হয়, তাহলে প্রথম অক্ষরটি বের করুন এবং অন্যান্য অক্ষরের জন্য ফাংশনটিকে পুনরাবৃত্তিমূলকভাবে কল করুন।
- যদি স্ট্রিং 'b' স্ট্রিং 'b'-এর থেকে কম বা সমান হয়, তাহলে প্রথম অক্ষরটি বের করুন এবং অন্যান্য অক্ষরের জন্য ফাংশনটিকে পুনরাবৃত্তভাবে কল করুন।
- সংযুক্ত স্ট্রিংটি ফেরত দিন।
উদাহরণ
#include <bits/stdc++.h> using namespace std; string concatenateLargest(string a, string b) { if (a.size() == 0 or b.size() == 0) { return (a + b); } if (a <= b) return b[0] + concatenateLargest(a, b.substr(1)); else return a[0] + concatenateLargest(a.substr(1), b); } int main() { string a = "bacaa"; string b = "abcaa"; cout << concatenateLargest(a, b) << endl; return 0; }
উপরের কোডটি চালানোর ফলে আউটপুট তৈরি হবে,
আউটপুট
bacabcaaaa
দুটি স্ট্রিং "bacaa" এবং "abcaa" প্রদত্ত সমস্যা অনুসারে একত্রিত হওয়ার পরে "bacabcaaaa" হয়ে যাবে৷