检查给定字符串是否可以通过连接 Python 列表中的字符串元素来形成


有时我们需要检查是否可以从列表中存在的许多字符串中形成所需的字符串。列表中存在的字符串的顺序也不重要,这些字符串需要连接起来以获得所需的字符串。

使用排列

从 itertools 中,我们可以使用 permutations 函数,它将以各种顺序为我们提供列表中字符串的可能组合。一旦给定的组合与所需的字符串匹配,我们就得出结论,该字符串可以被形成。

示例

 现场演示

from itertools import permutations

chk_str = 'balloon'
Alist = ['fly','on', 'o', 'hot', 'ball', 'air']

def findstring(strchk, biglist):
   for i in range(2, len(biglist) + 1):
      for perm in permutations(biglist, i):
         if ''.join(perm) == strchk:
         return True
   return False

# Using the function
if(findstring(chk_str,Alist)):
   print("String can be formed.")
else:
   print("String can not be formed.")

输出

运行以上代码将得到以下结果:

String can be formed.

使用正则表达式

re 模块提供了 compile 函数,该函数将通过指定正则表达式模式来创建可能的字符串。然后将其与要检查的字符串进行比较。如果结果不是 none,那么我们可以得出结论,该字符串可以被形成。

示例

 现场演示

import re

chk_str = 'balloon'
Alist = ['fly','on', 'o', 'hot', 'ball', 'air']

def findstring(strchk, biglist):
   r = re.compile("(?:" + "|".join(biglist) + ")*$")
   if r.match(strchk) != None:
      return True
   return False

# Using the function
if(findstring(chk_str,Alist)):
   print("String can be formed.")
else:
   print("String can not be formed.")

输出

运行以上代码将得到以下结果:

String can be formed.

更新于: 2020年5月13日

498 次浏览

开启你的 职业生涯

通过完成课程获得认证

开始学习
广告