Упражнения Java String: Найти лексикографический ранг данной строки
Строка Java: упражнение 50 с решением
Напишите программу на Java, чтобы найти лексикографический ранг данной строки.
Иллюстрированная презентация:
Пример решения:
Java-код:
import java.util.*;
class Main {
public static int makefactorial(int n) {
return (n <= 2) ? n : n * makefactorial(n - 1);
}
public static int calcuLexicoRank(String str, int n) {
int ctrOfRank = 1;
for (int i = 0; i < n; i++) {
int ctr = 0;
for (int j = i + 1; j <= n; j++) {
if (str.charAt(i) > str.charAt(j))
ctr++;
}
ctrOfRank += ctr * makefactorial(n - i);
}
return ctrOfRank;
}
public static void main(String[] args) {
String str ="BDCA";
System.out.println("The Given String is: " + str);
int n = str.length();
System.out.print("The Lexicographic rank of the given string is: " + calcuLexicoRank(str, n - 1));
}
}
Пример вывода:
Данная строка: BDCA Лексикографический ранг данной строки: 12
NB: Всего возможных перестановок BDCA (лексикографический порядок):
ABCD ABDC ACBD ACDB ADBC ADCB BACD BADC BCAD BCDA BDAC BDCA
1 2 3 4 5 6 7 8 9 10 11 12
BDCA появляются в 12 позиции перестановки (лексикографический порядок).
Блок - схема:
Редактор кода Java:
Улучшите этот пример решения и опубликуйте свой код через Disqus
Предыдущий: Напишите программу на Java, чтобы найти первый неповторяющийся символ из потока символов.
Далее: написать программу на Java для подсчета и печати всех дубликатов во входной строке.
Каков уровень сложности этого упражнения?
Новый контент: Composer: менеджер зависимостей для PHP , R программирования