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

Python - ตรวจสอบว่าสองสตริงมี isomorphic ในธรรมชาติหรือไม่


เมื่อจำเป็นต้องตรวจสอบว่าสตริงสองสตริงมีลักษณะแบบ isomorphic หรือไม่ จะมีการกำหนดเมธอดที่รับสองสตริงเป็นพารามิเตอร์ มันวนซ้ำตามความยาวของสตริง และแปลงอักขระเป็นจำนวนเต็มโดยใช้วิธี 'ord'

ตัวอย่าง

ด้านล่างนี้เป็นการสาธิตสิ่งเดียวกัน

MAX_CHARS = 256

def check_isomorphic(str_1, str_2):
   len_1 = len(str_1)
   len_2 = len(str_2)

   if len_1 != len_2:
      return False

   marked = [False] * MAX_CHARS
   map = [-1] * MAX_CHARS

   for i in range(len_2):

      if map[ord(str_1[i])] == -1:

         if marked[ord(str_2[i])] == True:
            return False

         marked[ord(str_2[i])] = True

         map[ord(str_1[i])] = str_2[i]

      elif map[ord(str_1[i])] != str_2[i]:
         return False
   return True
str_1 = 'aababa'
str_2 = 'xxyyxx'
print("The first string is :")
print(str_1)
print("The second string is :")
print(str_2)
print("Is the first string isomorphic ?")
print(check_isomorphic("aab","xxy"))
print("Is the second string isomorphic ?")
print(check_isomorphic("aab","xyz"))

ผลลัพธ์

The first string is :
aababa
The second string is :
xxyyxx
Is the first string isomorphic ?
True
Is the second string isomorphic ?
False

คำอธิบาย

  • มีการกำหนดวิธีการชื่อ 'check_isomorphic'

  • เมธอดนี้ใช้สองสตริงเป็นพารามิเตอร์

  • เป็นตัวกำหนดความยาวของสตริง

  • จำเป็นเพื่อให้แน่ใจว่าสตริงไม่มีความยาวเท่ากัน

  • มีการสร้างสองรายการโดยที่รายการหนึ่งมีค่า 'เท็จ' และอีกรายการหนึ่งมีค่า '-1'

  • ความยาวของสตริงที่สองถูกทำซ้ำ และอักขระของสตริงแรกจะถูกแปลงเป็นจำนวนเต็ม

  • ค่าที่สอดคล้องกันในรายการที่มีค่า 'False' มีการเปลี่ยนแปลง

  • นอกฟังก์ชัน มีการกำหนดสตริงสองสตริงและแสดงบนคอนโซล

  • วิธีการนี้ถูกเรียกโดยการส่งผ่านสตริงเหล่านี้เป็นพารามิเตอร์

  • เอาต์พุตจะแสดงบนคอนโซล