【发布时间】:2017-10-25 07:15:01
【问题描述】:
我怎样才能打乱 php 字符串? 我想在洗牌后的输出中显示所有的字符串。
示例输入:abc
输出:
abc
acb
bac
bca
cab
cba
我的代码:
function permutations() {
global $running;
global $characters;
global $bitmask;
if (count($running) == count($characters)) {
printf("%s\n", implode($running));
} else {
for ($i=0; $i<count($characters); $i++) {
if ( (($bitmask>>$i)&1) == 0 ) {
array_push($running, $characters[$i]);
$bitmask |= (1<<$i);
permutations();
array_pop($running);
}
}
}
}
fscanf(STDIN, '%s', $raw_input);
$characters = str_split($raw_input);
$running = array();
$bitmask = 0;
permutations();
fscanf() 总是出错
【问题讨论】:
-
如果您曾想过使用
global- 请改用参数。global不被认为是好的做法。 -
随机播放或所有可能的变化?
-
@Andreas 是的,对于所有可能的但仅适用于输入的许多字符,例如 abc 它不能是 aab 但 abca 它可以是 aabc。