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

C++-এ আইসোমরফিক স্ট্রিংস (Isomorphic Strings)


দুটি স্ট্রিং 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
  1. C/C++-এ strcmp() ফাংশন

  2. সি++ প্রোগ্রাম: স্ট্রিং কনক্যাটেনেট করা রিভার্স অর্ডারে

  3. C++-এ দুটি স্ট্রিং থেকে লার্জেস্ট মার্জ (Largest Merge) তৈরি করা

  4. C++-এ আইসোমরফিক ট্রি (Isomorphic Tree) চেক করা