duanqiu3800 2017-04-17 03:36
浏览 63
已采纳

字符串的排列将一组字符计为单个单元

My Question may sound noob but here it goes.

I take an input from the user as "Karim@123". I want my Program to create the permutations of the given input treating "Karim", "@" and "123" as single individual units.So the output will be something like "karim123@", "@karim123", "@123karim","123@karim","123karim@". Remember there will be 3! permutations in this particular case. I am using a php function but that function tells me all the permutations of "karim@123" which is not what i want. The function is as follows.

function permute($str,$i,$n) {
   if ($i == $n)
       print "$str
";
   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 : I am new to programming and algorithms.

PPS: Please, specify reason before downvoting.

  • 写回答

1条回答 默认 最新

  • doulin9679 2017-04-17 05:01
    关注

    Assuming the way you divide the string is that you include all alphabetical characters together, all special characters together and all numbers together, you can create a map like this for above example:

    A => Karim
    B => @
    C => 123
    

    Then create all permutations of "ABC", which will be:

    ABC, ACB, BAC, BCA, CAB, CBA
    

    and replace with the corresponding values from the map.

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
编辑
预览

报告相同问题?

手机看
程序员都在用的中文IT技术交流社区

程序员都在用的中文IT技术交流社区

专业的中文 IT 技术社区,与千万技术人共成长

专业的中文 IT 技术社区,与千万技术人共成长

关注【CSDN】视频号,行业资讯、技术分享精彩不断,直播好礼送不停!

关注【CSDN】视频号,行业资讯、技术分享精彩不断,直播好礼送不停!

客服 返回
顶部