เมื่อจำเป็นต้องตรวจสอบว่าสตริงสองสตริงมีลักษณะแบบ 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' มีการเปลี่ยนแปลง
-
นอกฟังก์ชัน มีการกำหนดสตริงสองสตริงและแสดงบนคอนโซล
-
วิธีการนี้ถูกเรียกโดยการส่งผ่านสตริงเหล่านี้เป็นพารามิเตอร์
-
เอาต์พุตจะแสดงบนคอนโซล