javaは文字列の完全な配置を実現します。
文字列の全配列、具体的な内容は以下の通りです。
文字列を入力し、文字列のすべての配列を辞書順に印刷します。例えば文字列a b cを入力すると、文字a,b,cによって並べられるすべての文字列abc,acb,bac,bca,cabおよびcbaがプリントされる。結果はアルファベット順に出力してください。
再帰的な考えを採用する:
全配列が必要な文字列を二つの部分に分けて見ます。
(1)文字列の最初の文字。
(2)最初の文字の後にあるすべての文字。
最初の位置に現れる可能性のあるすべての文字を求めます。最初の文字と後ろの文字を一回に交換します。
最初の文字を固定して、最初の文字の後ろのすべての文字を完全に並べます。最初の文字の後のすべての文字はまた二つの部分に分けられます。
javaコード:
文字列を入力し、文字列のすべての配列を辞書順に印刷します。例えば文字列a b cを入力すると、文字a,b,cによって並べられるすべての文字列abc,acb,bac,bca,cabおよびcbaがプリントされる。結果はアルファベット順に出力してください。
再帰的な考えを採用する:
全配列が必要な文字列を二つの部分に分けて見ます。
(1)文字列の最初の文字。
(2)最初の文字の後にあるすべての文字。
最初の位置に現れる可能性のあるすべての文字を求めます。最初の文字と後ろの文字を一回に交換します。
最初の文字を固定して、最初の文字の後ろのすべての文字を完全に並べます。最初の文字の後のすべての文字はまた二つの部分に分けられます。
javaコード:
import java.util.ArrayList;
import java.util.TreeSet;
public class Solution {
public ArrayList<String> Permutation(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>();
PermutationCore(charArray,tempRes,0);
res.addAll(tempRes);
return res;
}
private void PermutationCore( 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);//
PermutationCore(charArray,tempRes,loc+1);//
swap(charArray,i,loc);// ,
}
}
}
private void swap(char[] charArray,int i,int j)
{
char temp = charArray[i];
charArray[i] = charArray[j];
charArray[j] = temp;
}
}
以上が本文の全部です。皆さんの勉強に役に立つように、私たちを応援してください。