import java.util.Collection; import java.util.LinkedList; import java.util.stream.Collectors; /* Name of the class has to be "Main" only if the class is public. */ class Ideone { Collection<String> perms = new LinkedList<String>(); stringPermutation(s.toCharArray(), perms, 0); return perms; } private static void stringPermutation(char[] strArray, Collection<String> bucket, int index) { if (index == strArray.length) { return; } for (int i = index; i < strArray.length; i++) { swapChars(strArray, i, index); stringPermutation(strArray, bucket, index + 1); swapChars(strArray, i, index); } } private static void swapChars(char[] chars, int from, int to) { char tmp = chars[to]; chars[to] = chars[from]; chars[from] = tmp; } Collection<String> out = stringPermutation(w); System.out.printf("Processed word %s in to:\n %s\n", w, out.stream().collect(Collectors.joining("\n "))); } } }
Standard input is empty
Processed word ABC in to: ABC ACB BAC BCA CBA CAB Processed word foobar in to: foobar foobra fooabr fooarb foorab foorba foboar fobora fobaor fobaro fobrao fobroa foabor foabro foaobr foaorb foarob foarbo forbao forboa forabo foraob foroab foroba foobar foobra fooabr fooarb foorab foorba foboar fobora fobaor fobaro fobrao fobroa foabor foabro foaobr foaorb foarob foarbo forbao forboa forabo foraob foroab foroba fbooar fboora fboaor fboaro fborao fboroa fbooar fboora fboaor fboaro fborao fboroa fbaoor fbaoro fbaoor fbaoro fbaroo fbaroo fbroao fbrooa fbraoo fbraoo fbroao fbrooa faobor faobro faoobr faoorb faorob faorbo faboor faboro faboor faboro fabroo fabroo faobor faobro faoobr faoorb faorob faorbo farboo farboo farobo faroob faroob farobo frobao froboa froabo froaob frooab frooba frboao frbooa frbaoo frbaoo frboao frbooa fraboo fraboo fraobo fraoob fraoob fraobo frobao froboa froabo froaob frooab frooba ofobar ofobra ofoabr ofoarb oforab oforba ofboar ofbora ofbaor ofbaro ofbrao ofbroa ofabor ofabro ofaobr ofaorb ofarob ofarbo ofrbao ofrboa ofrabo ofraob ofroab ofroba oofbar oofbra oofabr oofarb oofrab oofrba oobfar oobfra oobafr oobarf oobraf oobrfa ooabfr ooabrf ooafbr ooafrb ooarfb ooarbf oorbaf oorbfa oorabf oorafb oorfab oorfba obofar obofra oboafr oboarf oboraf oborfa obfoar obfora obfaor obfaro obfrao obfroa obafor obafro obaofr obaorf obarof obarfo obrfao obrfoa obrafo obraof obroaf obrofa oaobfr oaobrf oaofbr oaofrb oaorfb oaorbf oabofr oaborf oabfor oabfro oabrfo oabrof oafbor oafbro oafobr oaforb oafrob oafrbo oarbfo oarbof oarfbo oarfob oarofb oarobf orobaf orobfa oroabf oroafb orofab orofba orboaf orbofa orbaof orbafo orbfao orbfoa orabof orabfo oraobf oraofb orafob orafbo orfbao orfboa orfabo orfaob orfoab orfoba oofbar oofbra oofabr oofarb oofrab oofrba oobfar oobfra oobafr oobarf oobraf oobrfa ooabfr ooabrf ooafbr ooafrb ooarfb ooarbf oorbaf oorbfa oorabf oorafb oorfab oorfba ofobar ofobra ofoabr ofoarb oforab oforba ofboar ofbora ofbaor ofbaro ofbrao ofbroa ofabor ofabro ofaobr ofaorb ofarob ofarbo ofrbao ofrboa ofrabo ofraob ofroab ofroba obfoar obfora obfaor obfaro obfrao obfroa obofar obofra oboafr oboarf oboraf oborfa obaofr obaorf obafor obafro obarfo obarof obroaf obrofa obraof obrafo obrfao obrfoa oafbor oafbro oafobr oaforb oafrob oafrbo oabfor oabfro oabofr oaborf oabrof oabrfo oaobfr oaobrf oaofbr oaofrb oaorfb oaorbf oarbof oarbfo oarobf oarofb oarfob oarfbo orfbao orfboa orfabo orfaob orfoab orfoba orbfao orbfoa orbafo orbaof orboaf orbofa orabfo orabof orafbo orafob oraofb oraobf orobaf orobfa oroabf oroafb orofab orofba boofar boofra booafr booarf booraf boorfa bofoar bofora bofaor bofaro bofrao bofroa boafor boafro boaofr boaorf boarof boarfo borfao borfoa borafo boraof boroaf borofa boofar boofra booafr booarf booraf boorfa bofoar bofora bofaor bofaro bofrao bofroa boafor boafro boaofr boaorf boarof boarfo borfao borfoa borafo boraof boroaf borofa bfooar bfoora bfoaor bfoaro bforao bforoa bfooar bfoora bfoaor bfoaro bforao bforoa bfaoor bfaoro bfaoor bfaoro bfaroo bfaroo bfroao bfrooa bfraoo bfraoo bfroao bfrooa baofor baofro baoofr baoorf baorof baorfo bafoor baforo bafoor baforo bafroo bafroo baofor baofro baoofr baoorf baorof baorfo barfoo barfoo barofo baroof baroof barofo brofao brofoa broafo broaof brooaf broofa brfoao brfooa brfaoo brfaoo brfoao brfooa brafoo brafoo braofo braoof braoof braofo brofao brofoa broafo broaof brooaf broofa aoobfr aoobrf aoofbr aoofrb aoorfb aoorbf aobofr aoborf aobfor aobfro aobrfo aobrof aofbor aofbro aofobr aoforb aofrob aofrbo aorbfo aorbof aorfbo aorfob aorofb aorobf aoobfr aoobrf aoofbr aoofrb aoorfb aoorbf aobofr aoborf aobfor aobfro aobrfo aobrof aofbor aofbro aofobr aoforb aofrob aofrbo aorbfo aorbof aorfbo aorfob aorofb aorobf aboofr aboorf abofor abofro aborfo aborof aboofr aboorf abofor abofro aborfo aborof abfoor abforo abfoor abforo abfroo abfroo abrofo abroof abrfoo abrfoo abrofo abroof afobor afobro afoobr afoorb aforob aforbo afboor afboro afboor afboro afbroo afbroo afobor afobro afoobr afoorb aforob aforbo afrboo afrboo afrobo afroob afroob afrobo arobfo arobof arofbo arofob aroofb aroobf arbofo arboof arbfoo arbfoo arbofo arboof arfboo arfboo arfobo arfoob arfoob arfobo arobfo arobof arofbo arofob aroofb aroobf roobaf roobfa rooabf rooafb roofab roofba roboaf robofa robaof robafo robfao robfoa roabof roabfo roaobf roaofb roafob roafbo rofbao rofboa rofabo rofaob rofoab rofoba roobaf roobfa rooabf rooafb roofab roofba roboaf robofa robaof robafo robfao robfoa roabof roabfo roaobf roaofb roafob roafbo rofbao rofboa rofabo rofaob rofoab rofoba rbooaf rboofa rboaof rboafo rbofao rbofoa rbooaf rboofa rboaof rboafo rbofao rbofoa rbaoof rbaofo rbaoof rbaofo rbafoo rbafoo rbfoao rbfooa rbfaoo rbfaoo rbfoao rbfooa raobof raobfo raoobf raoofb raofob raofbo raboof rabofo raboof rabofo rabfoo rabfoo raobof raobfo raoobf raoofb raofob raofbo rafboo rafboo rafobo rafoob rafoob rafobo rfobao rfoboa rfoabo rfoaob rfooab rfooba rfboao rfbooa rfbaoo rfbaoo rfboao rfbooa rfaboo rfaboo rfaobo rfaoob rfaoob rfaobo rfobao rfoboa rfoabo rfoaob rfooab rfooba