在 Python 中查找字符串所有排列的方法

pythonserver side programmingprogramming

在 Python 中,排列是一个表示可能顺序的过程。它通过定期更改命令的可能位置来处理列表中的项目。在 Python 中,我们可以使用不同的方法来创建和打印配置。

这里我们有几种方法来找到字符串的排列。

方法 1:使用 itertools 方法

示例

import itertools

def Permutation(string):
    permut = itertools.permutations(string)
    result = [''.join(p) for p in permut]
    
    return result

string = "Tutor"
print("Original String: ",string)
permutations = Permutation(string)
print("Possible Combination---")
print(permutations)

输出

Original String: Tutor
Possible Combination---
['Tutor', 'Tutro', 'Tuotr', 'Tuort', 'Turto', 'Turot', 'Ttuor', 'Tturo', 'Ttour', 'Ttoru', 'Ttruo', 'Ttrou', 'Toutr', 'Tourt', 'Totur', 'Totru', 'Torut', 'Tortu', 'Truto', 'Truot', 'Trtuo', 'Trtou', 'Trout', 'Trotu', 'uTtor', 'uTtro', 'uTotr', 'uTort', 'uTrto', 'uTrot', 'utTor', 'utTro', 'utoTr', 'utorT', 'utrTo', 'utroT', 'uoTtr', 'uoTrt', 'uotTr', 'uotrT', 'uorTt', 'uortT', 'urTto', 'urTot', 'urtTo', 'urtoT', 'uroTt', 'urotT', 'tTuor', 'tTuro', 'tTour', 'tToru', 'tTruo', 'tTrou', 'tuTor', 'tuTro', 'tuoTr', 'tuorT', 'turTo', 'turoT', 'toTur', 'toTru', 'touTr', 'tourT', 'torTu', 'toruT', 'trTuo', 'trTou', 'truTo', 'truoT', 'troTu', 'trouT', 'oTutr', 'oTurt', 'oTtur', 'oTtru', 'oTrut', 'oTrtu', 'ouTtr', 'ouTrt', 'outTr', 'outrT', 'ourTt', 'ourtT', 'otTur', 'otTru', 'otuTr', 'oturT', 'otrTu', 'otruT', 'orTut', 'orTtu', 'oruTt', 'orutT', 'ortTu', 'ortuT', 'rTuto', 'rTuot', 'rTtuo', 'rTtou', 'rTout', 'rTotu', 'ruTto', 'ruTot', 'rutTo', 'rutoT', 'ruoTt', 'ruotT', 'rtTuo', 'rtTou', 'rtuTo', 'rtuoT', 'rtoTu', 'rtouT', 'roTut', 'roTtu', 'rouTt', 'routT', 'rotTu', 'rotuT']

在这个程序中,我们导入了一个名为 itertools 的库。这个库帮助我们执行匹配、排列表格和进行更改等任务。然后,我们创建了一个名为 Permutation 的函数,该函数使用字符串参数调用。在这个函数中,我们使用 itertools.permutations 获得了字符串的所有可能排列。此函数将所有可能的结果返回到一个列表中。

然后,我们创建了一个名为 result 的新列表,其中我们将每个可能的结果连接成一个字符串。之后,我们将字符串 Tutor 组织成字符串。然后,我们用字符串调用 Permutation 函数并将其结果存储在 permutations 中。最后,我们使用 print 函数打印了排列。

方法 2:使用递归方法

示例

def Permutation(stg):
   if len(stg) == 1:
      return [stg]
   else:
      permut = []
      for i, x in enumerate(stg):
         for per in Permutation(stg[:i] + stg[i+1:]):
            permut.append(x + per)
         return permut
 
string = 'Pyth'
print("原始字符串: ",string)
print("可能的组合---")
print(Permutation(string))

输出

原始字符串:Pyth
可能的组合---
['Pyth']

在此代码中,有一个名为"Permutation"的函数,它定义了一个字符串。此函数以递归方式工作,以获取输入字符串的所有关键子字符串。函数"Permutation"已使用新递归修改为字符串以获取所有不同的关键选项。其目的是获取所有不同的关键子字符串,以便我们可以按顺序显示字符串的字符。此代码返回所有有效选项的列表。以下是代码示例,其中输入字符串为"Pyth",我们为此字符串调用"Permutation"函数。然后我们使用 print 函数打印所有关键选项的列表。

方法 3:使用回溯方法

示例

def Permutation(stg):
   def backtrack(n, x, res):
      if len(x) == len(stg):
         res.append(''.join(x))
         return
      for i in range(len(n)):
         char = n[i]
         if char not in x:
            x.append(char)
            backtrack(n, x, res)
            x.pop()
   n = list(stg)
   permutations = []
   backtrack(n, [], permutations)

   return permutations
string = "var"
print("原始字符串: ",string)
print("可能的组合---")
permutations = Permutation(string)
print(permutations)

输出

原始字符串:var
可能的组合---
['var', 'vra', 'avr', 'arv', 'rva', 'rav']

在此代码中,我们创建了一个函数"Permutation",该函数负责获取给定字符串的所有排列(配置)。我们使用了一种回溯技术,它帮助我们获取具有不同字母的所有可能排列。为此,我们使用了一个内部函数"backtrack",该函数以递归方式调用。

在函数"backtrack"中,我们回溯数字 (n),如果有合适的排列,我们会将它们添加到结果列表 (res)。我们一次添加和删除一个尚未包含的字母。

函数"Permutation"使用字符串 (stg) 调用并返回所有排列。我们提取了字符串"var"的排列并打印出来。

结论

总之,我们已经看到了一种在 Python 中查找字符串所有子字符串的方法。我们开发了一个实用的程序,将给定字符串的信息转换为所有可能的组合。我们利用这个程序来获取所有最新的结果。

该程序实时运行,可以采用任何配置。但是,随着字符串长度的增加,该程序可能需要更长时间才能运行。因此,在将其用于长字符串之前,必须仔细考虑时间。

总的来说,我们所看到的一切都表明我们应该能够编写一个简单而高效的 Python 程序来发现字符串的所有子字符串。


相关文章


有用资源