দুটি স্ট্রিং s এবং t আইসোমরফিক কিনা চেক করুন। আইসোমরফিক মানে s-এর অক্ষরগুলো রিপ্লেস করে t পাওয়া যায়, অর্ডার রক্ষা করে। দুটি ভিন্ন অক্ষর একই অক্ষরে ম্যাপ হতে পারবে না।
উদাহরণ: s="egg", t="add" -> true (e->a, g->d)।
সমাধানের ধাপসমূহ
- আকার ২৫৬ এর arr, visited, visited1 অ্যারে (আরম্ভ -1, 0, 0)।
- প্রতিটি ইন্ডেক্স i এর জন্য:
- যদি visited[s[i]] বা visited1[t[i]] == 1 হয়: arr[s[i]] != t[i]-'a' হলে false।
- অন্যথায় visited[s[i]]=1, visited1[t[i]]=1, arr[s[i]]=t[i]-'a'।
- true রিটার্ন করুন।
C++ কোড উদাহরণ
#include <bits/stdc++.h>
using namespace std;
class Solution {
public:
bool isIsomorphic(string s, string t) {
vector<int> arr(256, -1);
vector<bool> visited(256, 0), visited1(256, 0);
for (int i = 0; i < s.length(); i++) {
if (visited[s[i]] == 1 || visited1[t[i]] == 1) {
if (arr[s[i]] != t[i] - 'a') return false;
} else {
visited[s[i]] = 1;
visited1[t[i]] = 1;
arr[s[i]] = t[i] - 'a';
}
}
return true;
}
};
int main() {
Solution ob;
cout << ob.isIsomorphic("sky","fry");
return 0;
}
ইনপুট
"sky","fry"
আউটপুট
1