【发布时间】:2017-04-17 11:36:37
【问题描述】:
我的问题可能听起来很菜鸟,但它就在这里。
我将用户输入为“Karim@123”。我希望我的程序创建将“Karim”、“@”和“123”视为单个单独单元的给定输入的排列。因此输出将类似于“karim123@”、“@karim123”、“@123karim” “123@卡里姆”,“123卡里姆@”。记住会有3个!在这种特殊情况下的排列。我正在使用一个 php 函数,但该函数告诉我“karim@123”的所有排列,这不是我想要的。函数如下。
function permute($str,$i,$n) {
if ($i == $n)
print "$str\n";
else {
for ($j = $i; $j < $n; $j++) {
swap($str,$i,$j);
permute($str, $i+1, $n);
swap($str,$i,$j); // backtrack.
}
}
}
// function to swap the char at pos $i and $j of $str.
function swap(&$str,$i,$j) {
$temp = $str[$i];
$str[$i] = $str[$j];
$str[$j] = $temp;
}
$str = "hey";
permute($str,0,strlen($str));
PS : 我是编程和算法的新手。
PPS:请在投票前说明原因。
【问题讨论】:
-
为什么你只对字符串进行 3 次分割,例如
Karim、@和123,为什么不进行 4 或 5 或 2 或k分割? -
您是否将字符串分组,包括所有字母字符、所有特殊字符和所有数字?
-
没错。此外,输入字符串的模式将是这样的。 “单词”+“特殊字符”+“数字”。
-
我已经写了一个答案。这是一种微不足道的方法。
标签: php algorithm combinations permutation