以为想转型去互联网,以后会用php实现的,如哪地方有错误请及时提出
题目:输入一个字符串,打印出所有字符串的组合,例如:abc 会打印出abc,acb bac bca cab cba
解题思路:
第一步:把字符串分为两部分,一部分是字符亭的第一个字符,另一部分是余下所有的字符
第二步:把第一个字符和第二部分即后面所有的字符交接换
第三步:固定第一个字符,把余下字符重复第一步和第二步的操作
第四步:如果第二部分为空了,就直接输出字符串即可
从上面步骤上看出这是一个典型的递归操作;
本函数的缺点与不足:
1:本函数只会打印全长字符串的不同组合,并不打印子字符串的组合;
2:本函数在参数含有重复字符时会打印出重复的组合;
<?php
$string='abc';
function Permutation($str)
{
if($str==NULL)
return;
if(!is_string($str))
return;
echo_child($str,0); /*书上用指针,这里我们用下标*/
}
function echo_child($str,$index)
{
$len=strlen($str);
if($len==($index+1))
{
echo $str." ";
return;
}else
{
for($i=$index;$i<$len;$i++)
{
$tmp=$str[$index];
$str[$index]=$str[$i];
$str[$i]=$tmp; /*以上是和第一个字符交换*/
echo_child($str,$index+1); /*运用递归不断对余下的部分进行交换*/
}
}
}
str_due($string);
?>
输出:abc acb bac bca cab cba