Problem 604. Next lexicographic - permutation
Find next lexicographic - permutation (permutations as it would occur in a dictionary order).
E.g: nextP('ABCD') = ABDC
If you can generate the next permutation, then you can also generate a 'cycle' of all permutations using a construct like,
cycle = +1;
curr = start;
while ( true )
curr = nextP(curr);
if ( curr == start )
break;
end
cycle = cycle+1;
end
For fun, you could generate all the n! permutations of a, unique n-letter string.
Solution Stats
Problem Comments
-
2 Comments
Stefan Abendroth
on 20 Jul 2023
I think test case 6 is wrong. The lexicographic follower of 'xyzDOG' is 'xyzGDO', not 'xyzGOD'.
Dyuman Joshi
on 21 Jul 2023
@Stefan, if you see carefully, test case 6 asks for the *next to next* lexicographic permutation of 'DOG', which is 'GOD'.
Solution Comments
Show commentsProblem Recent Solvers50
Suggested Problems
-
Sort a list of complex numbers based on far they are from the origin.
5695 Solvers
-
Project Euler: Problem 4, Palindromic numbers
1147 Solvers
-
Make a run-length companion vector
644 Solvers
-
How many trades represent all the profit?
604 Solvers
-
We love vectorized solutions. Problem 1 : remove the row average.
832 Solvers
More from this Author10
Problem Tags
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!