在Python中找出将单词连接成回文串的不同方式的程序
假设我们有一个不同单词的列表,我们必须找出从给定单词列表中连接两个不同单词以形成回文串的不同方式的数量。
因此,如果输入为words = [“time”, “emit”, “mo”, “m”],那么输出将为3,因为我们可以制作”timeemit”,”emittime”和”mom”。
为了解决这个问题,我们将遵循以下步骤 −
- res := 0
-
ln := 数组中单词的数量
-
for k in range 0 to 1, do
- for i in range 0 to ln − 1, do
- for j in range i + 1 to ln − 1, do
-
res := res + (当words[i]连接words[j]是回文串时为1,否则为0)
-
words := 以相反的顺序排列的单词
- for i in range 0 to ln − 1, do
-
返回res
让我们看下面的实现以获得更好的理解−
更多Python相关文章,请阅读:Python 教程
示例
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