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
-
Find common elements in matrix rows
2668 Solvers
-
Recurring Cycle Length (Inspired by Project Euler Problem 26)
131 Solvers
-
Find the sum of the elements in the "second" diagonal
1164 Solvers
-
Remove the two elements next to NaN value
659 Solvers
-
Determine if input is a Narcissistic number
200 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!