Java: Find lexicographic rank of a given string
Java String: Exercise-50 with Solution
Write a Java program to find the lexicographic rank of a given string.
Visual Presentation:
Sample Solution:
Java Code:
// Importing necessary Java utilities.
import java.util.*;
// Define a class named Main.
class Main {
// Method to calculate factorial of a number recursively.
public static int makefactorial(int n) {
// If n is less than or equal to 2, return n. Otherwise, calculate n * factorial of (n - 1).
return (n <= 2) ? n : n * makefactorial(n - 1);
}
// Method to calculate the lexicographic rank of a given string.
public static int calcuLexicoRank(String str, int n) {
// Counter for the rank initialized to 1.
int ctrOfRank = 1;
// Loop through each character in the string.
for (int i = 0; i < n; i++) {
int ctr = 0;
// Compare the character at index i with subsequent characters.
for (int j = i + 1; j <= n; j++) {
// If the character at index i is greater than the character at index j, increment the counter.
if (str.charAt(i) > str.charAt(j))
ctr++;
}
// Calculate the lexicographic rank using the formula.
ctrOfRank += ctr * makefactorial(n - i);
}
return ctrOfRank; // Return the calculated rank.
}
// Main method to execute the program.
public static void main(String[] args) {
String str = "BDCA";
System.out.println("The Given String is: " + str);
int n = str.length(); // Get the length of the string.
// Display the lexicographic rank of the given string.
System.out.print("The Lexicographic rank of the given string is: " + calcuLexicoRank(str, n - 1));
}
}
Sample Output:
The Given String is: BDCA The Lexicographic rank of the given string is: 12
N.B.: Total possible permutations of BDCA are(lexicographic order) :
ABCD ABDC ACBD ACDB ADBC ADCB BACD BADC BCAD BCDA BDAC BDCA
1 2 3 4 5 6 7 8 9 10 11 12
The BDCA appear in 12 position of permutation (lexicographic order).
Flowchart:
Java Code Editor:
Improve this sample solution and post your code through Disqus
Previous: Write a Java program to find first non-repeating character from a stream of characters.
Next: Write a Java program to count and print all the duplicates in the input string.
What is the difficulty level of this exercise?
Test your Programming skills with w3resource's quiz.
It will be nice if you may share this link in any developer community or anywhere else, from where other developers may find this content. Thanks.
https://w3resource.com/java-exercises/string/java-string-exercise-50.php
- Weekly Trends and Language Statistics
- Weekly Trends and Language Statistics