Computer >> คอมพิวเตอร์ >  >> การเขียนโปรแกรม >> C#

จะตรวจสอบได้อย่างไรว่าสตริงที่กำหนดเป็นแบบ isomorphic โดยใช้ C #?


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