English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
В этом примере мы изучим расчет всех комбинаций строк в Java.
Чтобы понять этот пример, вы должны знать следующееПрограммирование на JavaТема:
Перестановка строки - это все возможные новые строки, которые можно сформировать, изменяя положение символов в строке. Например, строка ABC Имеющиеся комбинации [ABC, ACB, BAC, BCA, CAB, CBA].
import java.util.HashSet; import java.util.Scanner; import java.util.Set; class Main { public static Set<String> getPermutation(String str) { //Создать множество set, чтобы избежать повторяющихся排列 Set<String> permutations = new HashSet<String>(); //Проверить, не пуста ли строка if (str == null) { return null; } else if (str.length() == 0) { //Условие终止а рекурсии permutations.add(""); return permutations;} } //Получить первый символ char first = str.charAt(0); //Получить оставшуюся подстроку String sub = str.substring(1); //Рекурсивный вызов getPermutation() Set<String> words = getPermutation(sub); //Пройти words for (String strNew : words) { for (int i = 0; i <= strNew.length(); i++) { //Вставить排列 в множество set permutations.add(strNew.substring(0, i) + first + strNew.substring(i)); } } return permutations;} } public static void main(String[] args) { // Создать объект класса Scanner Scanner input = new Scanner(System.in); // Принимать ввод пользователя System.out.print("Ввод строки: "); String data = input.nextLine(); System.out.println(data + "的组合有:\n" + getPermutation(data)); } }
Результат вывода
Ввод строки: ABC Комбинации ABC: [ACB, BCA, ABC, CBA, BAC, CAB]
В Java мы используем рекурсию для вычисления всех комбинаций строк. Здесь мы храним перечисления в множестве. Таким образом,不会有 повторяющиеся комбинации.