문자열의 전체 배열, 특정 내용은 다음과 같습니다.
문자열을 입력하고 사전 순서로 문자열의 문자의 모든 배열을 인쇄하십시오. 예를 들어, 문자열 ABC를 입력하고 문자 A, B, C로 배열 할 수있는 모든 문자열 ABC, ACB, BCA, CAB 및 CBA를 인쇄합니다. 결과 알파벳 순서를 출력하십시오.
재귀 아이디어 채택 :
완전히 배열되어야하는 문자열을 두 부분으로 나눕니다.
(1) 문자열의 첫 번째 문자;
(2) 첫 번째 캐릭터 이후의 모든 캐릭터;
첫 번째 위치에 나타날 수있는 모든 문자를 찾으십시오. 첫 번째 캐릭터와 다음 문자를 한 번에 교환하십시오.
첫 번째 캐릭터를 수정하고 첫 번째 캐릭터 이후 모든 캐릭터의 전체 배열을 찾으십시오. 첫 번째 문자를 따르는 모든 문자는 두 부분으로 나눌 수 있습니다.
자바 코드 :
java.util.arraylist 가져 오기; java.util.treeset import; 공개 클래스 솔루션 {public arraylist <string> 순열 (String Str) {arraylist <string> res = new Arraylist <string> (); if (str == null || str.length () == 0) {return res; } char [] chararray = str.tochararray (); // 입력 사전 순서대로 출력 treeset <string> tempres = new treeset <string> (); PembutationCore (Chararray, Tempres, 0); res.addall (tempres); 리턴 레스; } private void pestutationCore (char [] charArray, treeSet <string> tempres, int loc) {if (charArray == null || charArray.length == 0 || loc <0 || loc> charArray.length-1) {return; } if (loc == charArray.length-1) {tempres.add (string.valueof (charArray)); // 재귀 종료} else {for (int i = loc; i <charArray.length; i ++) {swap (chararray, i, loc); 다음 캐릭터와 함께 다음 캐릭터 Publationcor with Publationcor와 함께; SWAP (charArray, i, loc); // 첫 번째 문자를 다른 문자와 교환 할 수 있도록 이전에 교환 된 문자를 스왑하여} private void swap (char [] chararray, int i, int j) {char temp = chararray [i]; chararray [i] = chararray [j]; chararray [j] = 온도; }}위는이 기사의 모든 내용입니다. 모든 사람의 학습에 도움이되기를 바랍니다. 모든 사람이 wulin.com을 더 지원하기를 바랍니다.