fork download
  1. import java.util.Collection;
  2. import java.util.LinkedList;
  3. import java.util.stream.Collectors;
  4.  
  5. /* Name of the class has to be "Main" only if the class is public. */
  6. class Ideone {
  7.  
  8. public static Collection<String> stringPermutation(String s) {
  9. Collection<String> perms = new LinkedList<String>();
  10. stringPermutation(s.toCharArray(), perms, 0);
  11. return perms;
  12. }
  13.  
  14. private static void stringPermutation(char[] strArray, Collection<String> bucket, int index) {
  15. if (index == strArray.length) {
  16. bucket.add(new String(strArray));
  17. return;
  18. }
  19.  
  20. for (int i = index; i < strArray.length; i++) {
  21. swapChars(strArray, i, index);
  22. stringPermutation(strArray, bucket, index + 1);
  23. swapChars(strArray, i, index);
  24. }
  25. }
  26.  
  27. private static void swapChars(char[] chars, int from, int to) {
  28. char tmp = chars[to];
  29. chars[to] = chars[from];
  30. chars[from] = tmp;
  31. }
  32.  
  33. public static void main(String[] args) {
  34. String[] words = { "ABC", "foobar" };
  35. for (String w : words) {
  36. Collection<String> out = stringPermutation(w);
  37. System.out.printf("Processed word %s in to:\n %s\n", w, out.stream().collect(Collectors.joining("\n ")));
  38. }
  39. }
  40.  
  41. }
Success #stdin #stdout 0.14s 4386816KB
stdin
Standard input is empty
stdout
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