별개의 단어 목록이 있다고 가정하고 회문을 만들기 위해 주어진 단어 목록에서 두 개의 다른 단어를 연결하는 다양한 방법을 찾아야 합니다.
따라서 입력이 단어 =["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