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

파이썬에서 회문을 만들기 위해 단어를 연결하는 방법의 수를 찾는 프로그램

<시간/>

별개의 단어 목록이 있다고 가정하고 회문을 만들기 위해 주어진 단어 목록에서 두 개의 다른 단어를 연결하는 다양한 방법을 찾아야 합니다.

따라서 입력이 단어 =["time", "emit", "mo", "m"]과 같으면 "timeemit", "emittime" 및 "mom"을 만들 수 있으므로 출력은 3이 됩니다. .

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

  • 해상도 :=0

  • ln :=배열의 단어 수

  • 0에서 1 사이의 k에 대해 수행

    • 0 ~ ln - 1 범위의 i에 대해 다음을 수행합니다.

      • i + 1 ~ ln − 1 범위의 j에 대해 다음을 수행합니다.

        • res :=res + (words[i] concatenate words[j]가 회문일 때 1, 그렇지 않으면 0)

    • 단어 :=역순으로 된 단어

  • 반환 해상도

이해를 돕기 위해 다음 구현을 살펴보겠습니다. −

예시

class Solution:
   def solve(self, words):
      def is_palindrome(w1, w2):
         w3 = w1 + w2
         return w3 == w3[::−1]
      res = 0
      ln = len(words)
      for k in range(2):
         for i in range(ln):
            for j in range(i + 1, ln):
               res += is_palindrome(words[i], words[j])
            words = words[::−1]
      return res
ob = Solution()
words = ["time", "emit", "mo", "m"]
print(ob.solve(words))

입력

["time", "emit", "mo", "m"]

출력

3