এই বিভাগে, আমরা দেখব কিভাবে দুটি স্ট্রিং মেটা স্ট্রিং কিনা তা পরীক্ষা করা যায়। মেটা স্ট্রিং হল সেই স্ট্রিং যা অনেক বেশি একই রকম। যদি আমরা একটি স্ট্রিং এ দুটি উপাদান অদলবদল করি, তাহলে এটি অন্য স্ট্রিং এর সাথে মিলে যাবে। ধরুন দুটি স্ট্রিং হল "HELLO" এবং "OELLH", তাহলে সেগুলি হল মেটা স্ট্রিং৷
দুটি স্ট্রিং মেটা স্ট্রিং কিনা তা পরীক্ষা করতে, আমাদের এই পদক্ষেপগুলি অনুসরণ করতে হবে৷
পদক্ষেপ −
-
যদি উভয় স্ট্রিং ভিন্ন দৈর্ঘ্যের হয়, তাহলে মিথ্যা ফেরত দিন
-
অন্যথায় অনেকগুলি অক্ষর খুঁজুন, যেগুলি মেলেনি, অ-মেলা অক্ষরগুলির সূচীও সংরক্ষণ করুন
-
যদি গণনা 2-এর বেশি হয়, তাহলে মিথ্যা ফেরত দিন
-
অন্যথায় এই অক্ষরগুলিকে অদলবদল করুন, তারপর যদি দুটি স্ট্রিং একই হয়, তবে সত্য ফেরত দিন, অন্যথায় মিথ্যা।
উদাহরণ
#include <iostream>
using namespace std;
bool areTheyMetaString(string s1, string s2) {
int s1_len = s1.length();
int s2_len = s2.length();
if (s1_len != s2_len)
return false;
int prev = -1, curr = -1;
int count = 0;
for (int i=0; i<s1_len; i++) {
if (s1[i] != s2[i]) {
count++; // number of unmatched characters
if (count > 2)
return false;
prev = curr;
curr = i;
}
}
return (count == 2 && s1[prev] == s2[curr] && s1[curr] == s2[prev]);
}
int main() {
string s1 = "HELLO", s2 = "OELLH";
if(areTheyMetaString(s1, s2)){
cout << "Meta Strings";
} else {
cout << "Not Meta Strings";
}
} আউটপুট
Meta Strings