Java 菜鳥教程

Java 流程控制

Java 數(shù)組

Java 面向?qū)ο?I)

Java 面向?qū)ο?II)

Java 面向?qū)ο?III)

Java 異常處理

Java 列表(List)

Java Queue(隊(duì)列)

Java Map集合

Java Set集合

Java 輸入輸出(I/O)

Java Reader/Writer

Java 其他主題

Java 程序計(jì)算列出字符串的所有排列組合

Java 實(shí)例大全

在此示例中,我們將學(xué)習(xí)計(jì)算Java中字符串的所有排列組合。

要理解此示例,您應(yīng)該了解以下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) {

    //創(chuàng)建 set 集合以避免重復(fù)排列
    Set<String> permutations = new HashSet<String>();

    //檢查字符串是否為空
    if (str == null) {
      return null;
    } else if (str.length() == 0) {
      //遞歸的終止條件
      permutations.add("");
      return permutations;
    }

    //得到第一個(gè)字符
    char first = str.charAt(0);

    //獲取剩余的子字符串
    String sub = str.substring(1);

    //遞歸調(diào)用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) {

    //創(chuàng)建scanner類的對(duì)象
    Scanner input = new Scanner(System.in);

    // 接受用戶的輸入
    System.out.print("輸入字符串: ");
    String data = input.nextLine();
    System.out.println(data + "  的排列組合有: \n" + getPermutation(data));
    }
}

輸出結(jié)果

輸入字符串: ABC
ABC 的排列組合有: 
[ACB, BCA, ABC, CBA, BAC, CAB]

在Java中,我們使用了遞歸來計(jì)算字符串的所有排列組合。在這里,我們將排列存儲(chǔ)在set集合中。因此,不會(huì)有重復(fù)的排列組合。

Java 實(shí)例大全

丰满人妻一级特黄a大片,午夜无码免费福利一级,欧美亚洲精品在线,国产婷婷成人久久Av免费高清