package Ġpractices Ċ Ċ /** Ċ Ġ* Ġ è¾ĵåħ¥ ä¸Ģä¸ª åŃĹç¬¦ä¸² ï¼Į æīĵåį° åĩº è¯¥ åŃĹç¬¦ä¸² ä¸Ń åŃĹç¬¦ çļĦæīĢæľī æİĴ åĪĹ ãĢĤ ä¾ĭå¦Ĥ è¾ĵåħ¥ åŃĹç¬¦ä¸² Ġabc ãĢĤ Ċ Ġ* Ġ åĪĻ æīĵåį° åĩº çĶ± åŃĹç¬¦ Ġa ãĢģ b ãĢģ c Ġ æīĢ èĥ½ æİĴ åĪĹ åĩº æĿ¥çļĦ æīĢæľī åŃĹç¬¦ä¸² Ġabc ãĢģ acb ãĢģ bac Ġ ãĢģ bca ãĢģ cab ĠåĴĮ Ġc ba ĠãĢĤ Ċ Ġ* Ċ Ġ* Ġ é¦ĸåħĪ , èĥ½ æĥ³ åĪ° åı¯ä»¥ çĶ¨ åħ¸ åŀĭ çļĦ éĢĴ å½Ĵ æĢĿ è·¯ : Ġa , bcd Ġ Ġb , acd Ġc , abc Ċ Ġ*/ Ċ Ċ fun Ġpermutation ( chars : ĠChar Array , Ġindex : ĠInt , Ġlength : ĠInt ) Ġ{ ĊĠĠĠ Ġif Ġ( index Ġ== Ġlength ) Ġ{ ĊĠĠĠĠĠĠĠ Ġprintln ( chars . content ToString ()) ĊĠĠĠĠĠĠĠ Ġreturn ĊĠĠĠ Ġ} ĊĠĠĠ Ġvar Ġi Ġ= Ġindex ĊĠĠĠ Ġwhile Ġ( i Ġ< Ġlength ) Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( i Ġ!= Ġindex Ġ&& Ġchars [ i ] Ġ== Ġchars [ index ]) Ġcontinue ĊĠĠĠĠĠĠĠ Ġif Ġ( i Ġ!= Ġindex ) Ġswap Chars ( chars , Ġi , Ġindex ) ĊĠĠĠĠĠĠĠ Ġpermutation ( chars , Ġindex Ġ+ Ġ 1 , Ġlength ) ĊĠĠĠĠĠĠĠ Ġ++ i ĊĠĠĠ Ġ} Ċ } Ċ Ċ fun Ġswap Chars ( array : ĠChar Array , Ġi : ĠInt , Ġj : ĠInt ) Ġ{ ĊĠĠĠ Ġif Ġ( i Ġ== Ġj ) Ġreturn ĊĠĠĠ Ġval Ġtmp Ġ= Ġarray [ i ] ĊĠĠĠ Ġarray [ i ] Ġ= Ġarray [ j ] ĊĠĠĠ Ġarray [ j ] Ġ= Ġtmp Ċ } Ċ Ċ fun Ġmain ( args : ĠArray < String >) Ġ{ ĊĠĠĠ Ġval Ġstring Ġ= Ġ" abc " ĊĠĠĠ Ġpermutation ( string . toCharArray (), Ġ 0 , Ġstring . length ) Ċ }