দুটি স্ট্রিং '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