кодесурса

Упражнения Java String: Найти лексикографический ранг данной строки

script1adsense2code
script1adsense3code

Строка 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 программирования


script1adsense4code
script1adsense5code
disqus2code
script1adsense6code
script1adsense7code
script1adsense8code
buysellads2code