English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

Tutoriales básicos de Java

Control de flujo Java

Java arrays

Java orientado a objetos (I)

Java orientado a objetos (II)

Java 面向对象(III)

Manejo de excepciones en Java

Java 列表(List)

Java Queue(队列)

Java Map集合

Java Set集合

Java 输入输出(I/O)

Java Reader/Writer

Java 其他主题

Java 程序计算列出字符串的所有排列组合

Java 实例大全

在此示例中,我们将学习计算Java中字符串的所有排列组合。

要理解此示例,您应该了解以下Java编程主题:

字符串的排列是指可以通过互换字符串字符的位置来形成的所有可能的新字符串。例如,字符串 ABC 具有的排列组合 [ABC, ACB, BAC, BCA, CAB, CBA]

示例:Java 程序获取字符串的所有排列组合

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);
    //递归调用getPersertion()
    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) {
    //Crear un objeto de la clase Scanner
    Scanner input = new Scanner(System.in);
    // Aceptar la entrada del usuario
    System.out.print("Escribe una cadena de entrada: ");
    String data = input.nextLine();
    System.out.println(data + "
" de las permutaciones son: + getPermutation(data));
    }
}

Resultado de salida

Cadena de entrada: ABC
Las permutaciones de ABC son: 
[ACB, BCA, ABC, CBA, BAC, CAB]

En Java, utilizamos la recursión para calcular todas las permutaciones de una cadena. Aquí, almacenamos las permutaciones en un conjunto. Por lo tanto, no habrá permutaciones repetidas.

Java 实例大全