สองสตริง 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