สมมติว่าเรามีสองสตริง S1 และ S2 ที่มีความยาวเท่ากัน เราต้องหาดัชนี i ที่ S1[0…i] และ S2[i+1…n-1] ให้ palindrome เมื่อนำมาต่อกัน เมื่อทำไม่ได้ ให้คืนค่า -1
ดังนั้น หากอินพุตเป็น S1 ="pqrsu", S2 ="wxyqp" เอาต์พุตจะเป็น 1 เนื่องจาก S1[0..1] ="pq", S2[2..n-1] ="ypq " จากนั้น S1 + S2 ="pqyqp" แสดงว่าเป็นพาลินโดรม
เพื่อแก้ปัญหานี้ เราจะทำตามขั้นตอนเหล่านี้ -
-
n :=ขนาดของ str1
-
str :=สตริงว่าง
-
สำหรับผมอยู่ในช่วง 0 ถึง n ทำ
-
str :=str ต่อ str1[i]
-
temp :=สตริงว่าง
-
สำหรับ j ในช่วง i + 1 ถึง n ทำ
-
temp :=temp concatenate str2[j]
-
-
ถ้า isPalindrome(str concatenate temp) เป็นจริง แล้ว
-
กลับมา
-
-
-
กลับ -1
ตัวอย่าง
ให้เราดูการใช้งานต่อไปนี้เพื่อความเข้าใจที่ดีขึ้น -
def isPalindrome(s): if s == s[::-1]: return True return False def find_index(str1, str2): n = len(str1) str = "" for i in range(n): str = str + str1[i] temp = "" for j in range(i + 1, n): temp += str2[j] if (isPalindrome(str + temp)): return i return -1 str1 = "pqrsu" str2 = "wxyqp" print(find_index(str1, str2))
อินพุต
"pqrsu", "wxyqp"
ผลลัพธ์
1