কম্পিউটার টিউটোরিয়াল

C++-এ দুইটি স্ট্রিং দুই জায়গা রোটেট করে সমান কিনা যাচাই করা

দুটি স্ট্রিং 'a' এবং 'b' দেওয়া থাকলে, 'a'-কে ঘড়ির সুই বা উল্টা দিকে ঠিক দুই জায়গা রোটেট করে 'b' পাওয়া যায় কিনা যাচাই করতে হবে।

ইনপুট-১

a = "google", b = "legoog"

আউটপুট

True

ব্যাখ্যা

"google"-কে এন্টিক্লকওয়াইজ দুই জায়গা রোটেট করলে "legoog" হয়।

ইনপুট-২

a = "tuorialst", b = "tutorials"

আউটপুট

False

সমাধানের পদ্ধতি

  • দুটি স্ট্রিং ইনপুট নিন।
  • লেন্থ ভিন্ন হলে false। লেন্থ <= 2 হলে সরাসরি তুলনা করুন।
  • অ্যান্টিক্লকওয়াইজ: b-এর শেষ ২ ক্যারেক্টার + প্রথম (n-2) ক্যারেক্টার = a কিনা চেক করুন।
  • ক্লকওয়াইজ: b-এর ২ নম্বর ইন্ডেক্স থেকে শেষ + প্রথম ২ ক্যারেক্টার = a কিনা চেক করুন।
  • দুটির যেকোনোটি মিললে true, না হলে false।

উদাহরণ

#include <bits/stdc++.h>
using namespace std;

bool checkRotated(string str1, string str2) {
    if (str1.length() != str2.length()) return false;
    if (str1.length() <= 2) return (str1 == str2);
    string s1 = str2.substr(str2.size()-2) + str2.substr(0, str2.size()-2);
    if (s1 == str1) return true;
    string s2 = str2.substr(2) + str2.substr(0, 2);
    if (s2 == str1) return true;
    return false;
}

int main() {
    string a = "google", b = "legoog";
    cout << checkRotated(a,b) << endl;
    return 0;
}

আউটপুট

1
  1. সি++-এ দুটি বাইনারি স্ট্রিং যোগ করার প্রোগ্রাম

  2. দুই স্ট্রিং কনক্যাটেনেট (Concatenate) করার C++ প্রোগ্রাম

  3. জাভায় স্ট্রিং ২ প্লেস ঘুরিয়ে অন্য স্ট্রিং তৈরি করা যায় কিনা যাচাই

  4. পাইথনে যাচাই করুন স্ট্রিং অন্য স্ট্রিং-কে ২ প্লেস রোটেট করে পাওয়া যায় কিনা