나는 다음과 같은 프로그램으로 지정된 캐릭터 라인의 순열의 총 수를 계산하기 위해 노력하고 있습니다 :문자열의 순열의 총 수를 찾기
프로그램
class Test{
public static void main(String[] args){
String str = "ABC";
int n = str.length();
//System.out.println(permute(str, 0, n-1));
permute(str, 0, n-1);
}
private static int permute(String str, int l, int r){
ArrayList<String> list=new ArrayList<String>();
if (l == r)
//System.out.println(str);
list.add(str);
else
{
for (int i = l; i <= r; i++)
{
str = swap(str,l,i);
permute(str, l+1, r);
str = swap(str,l,i);
}
}
/*for (int i=0;i<list.size() ;i++) {
System.out.println(list.get(i));
}*/
return list.size();
}
public static String swap(String a, int i, int j){
char temp;
char[] charArray = a.toCharArray();
temp = charArray[i] ;
charArray[i] = charArray[j];
charArray[j] = temp;
return String.valueOf(charArray);
}
}
출력 : 0
다시 주어진 문자열의 순열을 표시하는 데 같은 방법을 적용합니다. 다음 프로그램은 나의 접근 방식을 보여줍니다
프로그램을
class Test{
public static void main(String[] args){
String str = "ABC";
int n = str.length();
//System.out.println(permute(str, 0, n-1));
permute(str, 0, n-1);
}
private static void permute(String str, int l, int r){
ArrayList<String> list=new ArrayList<String>();
if (l == r)
//System.out.println(str);
list.add(str);
else
{
for (int i = l; i <= r; i++)
{
str = swap(str,l,i);
permute(str, l+1, r);
str = swap(str,l,i);
}
}
for (int i=0;i<list.size() ;i++) {
System.out.println(list.get(i));
}
//return list.size();
}
public static String swap(String a, int i, int j){
char temp;
char[] charArray = a.toCharArray();
temp = charArray[i] ;
charArray[i] = charArray[j];
charArray[j] = temp;
return String.valueOf(charArray);
}
}
출력 :
ABC
ACB
BAC
BCA
CBA
CAB
내가 0
를 얻을 arraylist
의 크기를 반환 할 때 내 의심의 여지가 여기에있다 출력물은 list
의 모든 요소를 출력 할 때 모든 순열을 표시합니다.
내 의심을 없앨 수 있습니까?
permute 메서드에서 새 List 객체를 만들기 때문입니다. 목록을 전역 변수로 만드십시오. –
번호를 얻기 위해 모든 순열을 생성 할 필요가 없다는 것을 알고 있습니까? – MBo
도움을 주셔서 감사합니다 !! –