用一组字符替换字符串中的“#”,给出所有可能的字符串组合[关闭]

Posted

技术标签:

【中文标题】用一组字符替换字符串中的“#”,给出所有可能的字符串组合[关闭]【英文标题】:Replace '#' in a string with a set of characters, give all possible string combinations [closed] 【发布时间】:2021-12-15 22:01:54 【问题描述】:

问题: 将字符串 S 中的“#”替换为一组字符。替换后生成所有可能的字符串组合。

示例 1: 字符串 = "a#b" 字符集 = 1,2,3 可能的字符串是“a1b”、“a2b”、“a3b”

示例 2: 字符串 = "##b" 字符集 = 1,2 可能的字符串是“11b”、“22b”、“12b”、“21b”

我的工作:使用单个“#”很明显,我能够做到,但是当字符串像“a#bcd#ef#”时,我没有继续进行的想法。

谁能提供一个算法和工作代码(可能在python中)

【问题讨论】:

你做了什么?请提供您的代码,以便我们提供帮助! 【参考方案1】:

您可以使用itertools.product 生成可能的字符串组合,然后使用迭代器(和next)技巧将# 替换为字符。

import itertools

def fill_pounds(s, chars):
    for p in map(iter, itertools.product(chars, repeat=s.count('#'))):
        yield ''.join(c if c != '#' else next(p) for c in s)

print(*fill_pounds('a#b', '123'))
print(*fill_pounds('##b', '12'))
print(*fill_pounds('f##k', 'or'))

输出:

a1b a2b a3b
11b 12b 21b 22b
fook fork frok frrk

【讨论】:

以上是关于用一组字符替换字符串中的“#”,给出所有可能的字符串组合[关闭]的主要内容,如果未能解决你的问题,请参考以下文章

用一组单词数组中的随机单词替换字符串中的整个单词

C++:寻找一种简洁的解决方案,用特定字符替换 std::string 中的一组字符

替换出现在两个特定单词之间的一组字符串的所有出现

如何替换 Java 字符串中的一组标记?

Java:用其他不同的字符替换一组字符

用R中的组中的非NA字符替换一组值的NA [重复]