按要求打印字符数组中所有可能的字符组合

package clq;

public class test {
/*拼接的字符个数*/
public static int SURPLUS_STRING_COUNT=0;

/*需要排序对象的个数*/
public static int SORT_SIZE=4;
/*每组排序字符的大小*/
public static int EACH_GROUP_SIZE=4;
/*每行结果打印个数*/
public static int EACH_LINE_PRINT_NUMBER=4;
/**
* @param args
*/
public static void main(String[] args) {
String[] charArray={"a","b","c","d"};

for (int i = 0; i < 4; i++) {
Character_Spliced(charArray[i],Filter_Array(charArray[i],charArray));
}
}

/**
* 字符组合递归方法
* @param already_spli ced_string 需要继续拼接的字符串
* @param surplus_character_array 剩余的为拼接字符数组
*/
public static void  Character_Spliced(String already_spliced_string,String[] surplus_character_array)
{
if(surplus_character_array.length==SORT_SIZE-EACH_GROUP_SIZE+1)
{
for (int i = 0; i < surplus_character_array.length; i++) 
{
if(SURPLUS_STRING_COUNT%EACH_LINE_PRINT_NUMBER==0)
{
System.out.print("\n");
}
SURPLUS_STRING_COUNT++;
/*打印拼接完的字符*/
System.out.print(already_spliced_string+surplus_character_array[i]+"\t");
}

return;
}
else
{
for (int i = 0; i < surplus_character_array.length; i++) {
Character_Spliced(already_spliced_string+surplus_character_array[i],Filter_Array(surplus_character_array[i],surplus_character_array));
}
}


}


/**
* 字符数组过滤
* @param need_deleted_str 需要被删除的字符
* @param old_array 讲被过滤的数组
* @return 返回过滤之后的数组
*/
public static String[] Filter_Array(String need_deleted_str,String[] old_array)
{

if(old_array== null||old_array.length<=1)
{
return old_array;
}

String[] newArr=new String[old_array.length-1];
int count=0;
for (int i = 0; i < old_array.length; i++) {
if(!old_array[i].equals(need_deleted_str))
{
newArr[count]=old_array[i];
count++;
}
}
return newArr;
}

}



可以修改EACH_GROUP_SIZE常量。可以替换字符数组。欢迎高手指导

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值