Php 将一组字符作为单个单位计数的字符串排列
我的问题可能听起来很愚蠢,但问题来了 我将用户的输入作为Karim@123. 我想让我的程序创建给定输入的排列,将Karim、@和123作为单个单独的单位。因此,输出将类似于karim123@、@karim123、@123karim,123@karim,123karim@. 记住会有三个!在这种特殊情况下的排列。我正在使用一个php函数,但该函数告诉我karim@123这不是我想要的。功能如下Php 将一组字符作为单个单位计数的字符串排列,php,algorithm,combinations,permutation,Php,Algorithm,Combinations,Permutation,我的问题可能听起来很愚蠢,但问题来了 我将用户的输入作为Karim@123. 我想让我的程序创建给定输入的排列,将Karim、@和123作为单个单独的单位。因此,输出将类似于karim123@、@karim123、@123karim,123@karim,123karim@. 记住会有三个!在这种特殊情况下的排列。我正在使用一个php函数,但该函数告诉我karim@123这不是我想要的。功能如下 function permute($str,$i,$n) { if ($i == $n)
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:请在向下投票前指定原因。假设您划分字符串的方式是将所有字母字符、所有特殊字符和所有数字包括在一起,您可以创建类似于上述示例的地图:
A => Karim
B => @
C => 123
然后创建ABC的所有排列,将是:
ABC, ACB, BAC, BCA, CAB, CBA
并替换为映射中的相应值。为什么只对字符串进行3次分割,如Karim、@和123,为什么不进行4次、5次、2次或k次分割?这样可以将字符串分组,将所有字母字符、所有特殊字符和所有数字都包括在一起?完全正确。此外,输入字符串的模式如下所示。单词+特殊字符+数字。我已经写了答案。在某种程度上,这是一种琐碎的方法?你还有其他疑问/问题吗?请尽管问,我会尽力帮助你。