Sorted Permutation Rank
Given a string, find the rank of the string amongst its permutations sorted lexicographically. Assume that no characters are repeated.
Example :
The answer might not fit in an integer, so return your answer % 1000003
Explaination:
Let the given string be βSTRINGβ. In the input string, βSβ is the first character. There are total 6 characters and 4 of them are smaller than βSβ. So there can be 4 * 5! smaller strings where first character is smaller than βSβ, like following
R X X X X X I X X X X X N X X X X X G X X X X X
Now let us Fix Sβ and find the smaller strings starting with βSβ.
Repeat the same process for T, rank is 4*5! + 4*4! +β¦
Now fix T and repeat the same process for R, rank is 4*5! + 4*4! + 3*3! +β¦
Now fix R and repeat the same process for I, rank is 4*5! + 4*4! + 3*3! + 1*2! +β¦
Now fix I and repeat the same process for N, rank is 4*5! + 4*4! + 3*3! + 1*2! + 1*1! +β¦
Now fix N and repeat the same process for G, rank is 4*5! + 4*4! + 3*3! + 1*2! + 1*1! + 0*0!
Rank = 4*5! + 4*4! + 3*3! + 1*2! + 1*1! + 0*0! = 597
Note that the above computations find count of smaller strings. Therefore rank of given string is count of smaller strings plus 1. The final rank = 1 + 597 = 598
Last updated