假设我们有一个不同单词的列表,我们必须找到多种方法,可以将给定单词列表中的两个不同单词连接起来组成回文。
因此,如果输入像单词= [“ time”,“ emit”,“ mo”,“ m”],则输出将为3,因为我们可以将“ timeemit”,“ emittime”和“ mom” 。
为了解决这个问题,我们将遵循以下步骤-
res:= 0
ln:=数组中的单词数
对于0到1范围内的k
对于范围i + 1至ln − 1的j
res:= res +(单词[i]串联单词[j]为回文时为1,否则为0)
对于i在0到ln − 1的范围内
单词:=逆序单词
返回资源
让我们看下面的实现以更好地理解-
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