fork download
  1. def get_perms(s, prefix, result):
  2. if len(s) == 0:
  3. result.append(prefix)
  4. return
  5. for i in range(len(s)):
  6. new_s = s[:i] + s[i+1:]
  7. get_perms(new_s, prefix+s[i], result)
  8.  
  9.  
  10. if __name__ == '__main__':
  11. s = "abcd"
  12. perms = []
  13. get_perms(s, "", perms)
  14. print(perms)
  15.  
  16. next_perm = "zzzzzz" # initialize to largest lexicographical string
  17. for perm in perms:
  18. if perm == s: # ignore
  19. continue
  20. if perm > s:
  21. next_perm = perm if perm < next_perm else next_perm
  22. print(next_perm)
Success #stdin #stdout 0.02s 8892KB
stdin
Standard input is empty
stdout
['abcd', 'abdc', 'acbd', 'acdb', 'adbc', 'adcb', 'bacd', 'badc', 'bcad', 'bcda', 'bdac', 'bdca', 'cabd', 'cadb', 'cbad', 'cbda', 'cdab', 'cdba', 'dabc', 'dacb', 'dbac', 'dbca', 'dcab', 'dcba']
abdc