我想获得字符串交换字符对的所有排列。例如:
基本字符串:abcd
组合:
bacd
acbd
abdc
ETC。
我只想交换彼此相邻的字母。就像第一与第二,第二与第三,但第三与第六不同。
最好的方法是什么?
只是为了好玩:有三到四个解决方案,有人可以发布这些解决方案的速度测试,以便我们可以比较哪个是最快的?
我对 nickf 的代码和我的代码进行了速度测试,结果是我的代码在 4 个字母处击败了 nickf(10K 次为 0.08 和 0.06),但 nickf 的代码在 10 个字母处击败了它(nick 的 0.24 和我的 0.37)
编辑:Markdown 今天讨厌我......
$input = "abcd";
$len = strlen($input);
$output = array();
for ($i = 0; $i < $len - 1; ++$i) {
$output[] = substr($input, 0, $i)
. substr($input, $i + 1, 1)
. substr($input, $i, 1)
. substr($input, $i + 2);
}
print_r($output);
Run Code Online (Sandbox Code Playgroud)