Computer >> 컴퓨터 >  >> 프로그램 작성 >> Python

Python에서 연결될 때 i가 회문을 형성할 때까지 S1의 접두사와 S2의 접미사가 해당하는 색인 ​​i를 찾으십시오.


길이가 같은 두 개의 문자열 S1과 S2가 있다고 가정하면 S1[0…i]와 S2[i+1…n-1]이 제공하는 인덱스 i를 찾아야 합니다. 함께 연결될 때 회문. 불가능할 경우 -1을 반환합니다.

따라서 입력이 S1 ="pqrsu", S2 ="wxyqp"와 같으면 출력은 S1[0..1] ="pq", S2[2..n-1] ="ypq"와 같이 1이 됩니다. ", S1 + S2 ="pqyqp"는 회문임을 나타냅니다.

이 문제를 해결하기 위해 다음 단계를 따릅니다. −

  • n :=str1의 크기

  • str :=빈 문자열

  • 0에서 n 사이의 i에 대해 수행

    • str :=str 연결 str1[i]

    • temp :=빈 문자열

    • i + 1에서 n 사이의 j에 대해 수행

      • temp :=임시 연결 str2[j]

    • isPalindrome(str concatenate temp)가 참이면

      • 반환 i

  • 반환 -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