duanqiu3800 2017-04-17 11: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 13: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.

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

报告相同问题?

悬赏问题

  • ¥15 拟通过pc下指令到安卓系统,如果追求响应速度,尽可能无延迟,是不是用安卓模拟器会优于实体的安卓手机?如果是,可以快多少毫秒?
  • ¥20 神经网络Sequential name=sequential, built=False
  • ¥16 Qphython 用xlrd读取excel报错
  • ¥15 单片机学习顺序问题!!
  • ¥15 ikuai客户端多拨vpn,重启总是有个别重拨不上
  • ¥20 关于#anlogic#sdram#的问题,如何解决?(关键词-performance)
  • ¥15 相敏解调 matlab
  • ¥15 求lingo代码和思路
  • ¥15 公交车和无人机协同运输
  • ¥15 stm32代码移植没反应