দুটি স্ট্রিং, X এবং Y, আइसোমর্ফিক বলা হয় যদি X-এ প্রতিটি ক্যারেক্টারের সকল আকারেন্স যেন অন্য একটি ক্যারেক্টার দিয়ে রিপ্লেস করলে Y পাওয়া যায় এবং বিপরীতও সত্য হয়। উদাহরণস্বরূপ, ACAB এবং XCXY স্ট্রিংগুলো বিবেচনা করুন। একটি ক্যারেক্টারের সকল আকারেন্স অবশ্যই অন্য ক্যারেক্টার দিয়ে রিপ্লেস করতে হবে ক্যারেক্টার অর্ডার সংরক্ষণ করে। দুটি ক্যারেক্টার একই ক্যারেক্টারে ম্যাপ হতে পারবে না, কিন্তু একটি ক্যারেক্টার নিজের সাথে ম্যাপ হতে পারে।
উদাহরণ ১
ইনপুট − s = "egg", t = "add"
আউটপুট − true
উদাহরণ ২
ইনপুট − s = "foo", t = "bar"
আউটপুট − false
টাইম কমপ্লেক্সিটি − O(N)
স্পেস কমপ্লেক্সিটি − O(N)
কোড
public class Arrays{ public bool IsStringIsomorphic(string s, string t){ if (s == null || t == null){ return false; } int[] chars1 = new int[128]; int[] chars2 = new int[128]; for (int i = 0; i < s.Length; i++){ if (chars1[s[i]] != chars2[t[i]]){ return false; } else{ chars1[s[i]] = i + 1; chars2[t[i]] = i + 1; } } return true; } } static void Main(string[] args){ Console.WriteLine(s.IsStringIsomorphic("add", "egg")); }আউটপুট
True