สองสตริง X และ Y ถูกเรียกว่า isomorphic หากการเกิดขึ้นทั้งหมดของอักขระแต่ละตัวใน X สามารถแทนที่ด้วยอักขระอื่นเพื่อรับ Y และในทางกลับกัน ตัวอย่างเช่น พิจารณาสตริง ACAB และ XCXY อักขระที่เกิดขึ้นทั้งหมดต้องถูกแทนที่ด้วยอักขระอื่นในขณะที่รักษาลำดับของอักขระ ห้ามอักขระสองตัวจับคู่กับอักขระตัวเดียวกัน แต่อักขระหนึ่งตัวอาจจับคู่กับตัวมันเอง
ตัวอย่างที่ 1
ป้อนข้อมูล − s ="ไข่", t ="เพิ่ม"
ผลลัพธ์ − จริง
ตัวอย่างที่ 2
ป้อนข้อมูล − s ="foo", t ="bar"
ผลลัพธ์ − เท็จ
ความซับซ้อนของเวลา − 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