Computer >> 컴퓨터 >  >> 프로그램 작성 >> C#

C#을 사용하여 주어진 문자열이 동형인지 확인하는 방법은 무엇입니까?


X의 각 문자가 모두 Y를 얻기 위해 다른 문자로 대체될 수 있고 그 반대의 경우도 마찬가지인 경우 두 문자열 X 및 Y를 동형이라고 합니다. 예를 들어 문자열 ACAB 및 XCXY를 고려하십시오. 문자의 모든 발생은 문자 순서를 유지하면서 다른 문자로 대체되어야 합니다. 두 캐릭터는 같은 캐릭터에 매핑될 수 없지만 한 캐릭터는 자신에게 매핑될 수 있습니다.

예시 1

입력 − s ="계란", t ="추가"

출력 - 사실

예시 2

입력 − s ="푸", t ="막대"

출력 - 거짓

시간 복잡도 - 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