【发布时间】:2014-10-10 08:19:58
【问题描述】:
我正在尝试从一行文本中提取字符串的出现及其字符的所有排列。
例如,我需要从以下字符串 s 中提取字符串 t = 'ABC' 及其所有排列:'ABC'、'CAB'、'BCA'、'BAC'、'CBA':
s = 'ABCXABCXXACXXBACXXBCA'
结果为:ABC、ABC、BAC、BCA
字符串t可以是任意长度,可以包含[A-Z]、[a-z]和[0-9]中的任意字符
有没有办法在 Python 中使用正则表达式来获取结果?
我知道我可以构建一个包含所有排列的列表,然后单独搜索列表中的所有项目,但我想知道正则表达式是否可以以更紧凑和更快的方式提供结果。
【问题讨论】:
-
我不认为正则表达式可以解决这个问题。您可能需要使用滑动窗口算法来查找最坏情况 O(n*a),其中 n 是字符串的长度,a 是字母表的大小(a = 26 + 26 + 10 = 62 in your案例)
-
字符串t可以包含重复字符吗?
标签: python regex string permutation