gpt4 book ai didi

php - 如何使用 PHP 获取所有可能的字符串排列?

转载 作者:可可西里 更新时间:2023-11-01 01:07:56 24 4
gpt4 key购买 nike

有一个字符映射,像这样:

$replacements = array(
array('a', 'b'), // a => b
array('a', 'c'), // a => c
array('b', 'n'),
array('c', 'x'),
);

还有一个输入字符串,比如“cbaa”。我如何获得所有组合,其中至少一个字符被替换为其替代字符之一?在本例中,“a”可以替换为“b”和“c”,因此字符串包括:

xbaa
cnaa
xbba
cbca
cbab
cbac
...
xnaa
xnac
...

最佳答案

这里是 Dmitry Tarasov 代码的修改版本(请将所有功劳归功于他)这似乎工作正常。

class Combine {
private static $_result = array();

public static function run($str, $replacements){
self::_run($str, $replacements, 0);
return array_values(array_unique(self::$_result));
}

private static function _run($str, $replacements, $start){
self::$_result[] = $str;
for($i = $start, $l = strlen($str); $i < $l; $i++){
self::_run($str, $replacements, $i+1);
if(isset($replacements[$str[$i]])){
foreach($replacements[$str[$i]] as $key => $val){
$str[$i] = $val;
// call recursion
self::_run($str, $replacements, $i+1);
}
}
}
}
}

print_r( Combine::run($str, $replacements) );

私有(private)函数的引入是为了避免那些繁重的数组操作被多次执行,而它们除了在根调用之外没有在任何地方使用。

关于php - 如何使用 PHP 获取所有可能的字符串排列?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6891844/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com