দুটি সমান দৈর্ঘ্যের স্ট্রিং s1 ও s2 দেওয়া আছে। চেক করতে হবে s1 এর কোনো পারমুটেশন কি s2 এর কোনো পারমুটেশনকে ব্রেক করতে পারে (অথবা উল্টো)। স্ট্রিং a স্ট্রিং b কে ব্রেক করতে পারে যদি সব i এর জন্য a[i] >= b[i] (অ্যালফাবেটিক্যালি)।
ইনপুট: s1 = "abc", s2 = "xya" → আউটপুট: true ("ayx" ব্রেক করে "abc" কে)
সমাধানের ধাপগুলো:
দুটি স্ট্রিং সর্ট করব
check(s1, s2): সবiএর জন্যs2[i] >= s1[i]কিনা চেক করবcheck(s2, s1)ওcheck(s1, s2)যেকোনো একটা true হলে রিটার্ন true
উদাহরণ
নিচের কোডটি দেখুন −
#include <bits/stdc++.h>
using namespace std;
class Solution {
public:
bool check(string& s1, string& s2) {
for (int i = 0; i < s1.size(); i++) {
if (s2[i] < s1[i])
return false;
}
return true;
}
bool checkIfCanBreak(string s1, string s2) {
sort(s1.begin(), s1.end());
sort(s2.begin(), s2.end());
bool f3 = check(s2, s1);
bool f4 = check(s1, s2);
return f3 || f4;
}
};
int main() {
Solution ob;
cout << (ob.checkIfCanBreak("abc", "xya"));
}
ইনপুট
"abc", "xya"
আউটপুট
1