Computer >> Máy Tính >  >> Lập trình >> C#

Làm cách nào để kiểm tra xem các chuỗi đã cho có phải là đẳng cấu hay không bằng cách sử dụng C #?


Hai chuỗi X và Y được gọi là đẳng cấu nếu tất cả các lần xuất hiện của mỗi ký tự trong X có thể được thay thế bằng một ký tự khác để lấy Y và ngược lại. Ví dụ, hãy xem xét các chuỗi ACAB và XCXY. Tất cả các lần xuất hiện của một ký tự phải được thay thế bằng một ký tự khác mà vẫn giữ nguyên thứ tự của các ký tự. Không có hai ký tự nào có thể ánh xạ đến cùng một ký tự, nhưng một ký tự có thể ánh xạ với chính nó.

Ví dụ 1

Đầu vào - s ="trứng", t ="thêm"

Đầu ra - đúng

Ví dụ 2

Đầu vào - s ="foo", t ="thanh"

Đầu ra - sai

Độ phức tạp về thời gian - O (N)

Độ phức tạp của không gian - 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"));
}

Đầu ra

True