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); //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) { //scanner 클래스의 객체를 생성합니다 Scanner input = new Scanner(System.in); // 사용자 입력을 받습니다 System.out.print("입력 문자열: "); String data = input.nextLine(); System.out.println(data + 의 조합은 다음과 같습니다: " + getPermutation(data)); } }
출력 결과
입력 문자열: ABC ABC의 조합은 다음과 같습니다: [ACB, BCA, ABC, CBA, BAC, CAB]
Java에서는 문자열의 모든 조합을 계산하기 위해 재귀를 사용했습니다. 여기서는 조합을 set集合에 저장합니다. 따라서 중복된 조합이 없습니다.