将一个字符串数组进行分组输出,每组中的字符串都由相同的字符组成。(分组后的每组放进二维数组,最终得到的是一个二维数组。)

/*
基本思路:
将符合要求的字符串先拼接在一起,拼接完成后以拼接符进行分割即可。
*/

import java.util.*;
public class Test01
{
public static void main(String[] args)throws Exception//为了简单,将所有的异常都上抛。
{
String[] strarr={"a","abc","acb","bca","xt","xyz","aa","aa","ABC","BAC","AcB"};
String[][] strarr1=stringArrSplit(strarr);
System.out.println("按要求分组后的二维数组:"+Arrays.deepToString(strarr1));


}

static boolean isSame(String str1,String str2)//判断两个字符串是否符合要求的静态方法
{
if(str1.length()!=str2.length())return false;

char[] chararr1=str1.toCharArray();
Arrays.sort(chararr1);
char[] chararr2=str2.toCharArray();
Arrays.sort(chararr2);

if((String.valueOf(chararr1)).equals(String.valueOf(chararr2)))return true;
return false;

}

static String[][] stringArrSplit(String[] strarr)//返回值是按要求分组后的二维数组。
{
String str=null;//临时变量
for(int i=0;i<strarr.length;i++)
{
if(strarr[i]!="@")
{str=strarr[i];

for(int j=i+1;j<strarr.length;j++)
{
while(isSame(str,strarr[j]))//如果两个字符串符合要求的话,进行拼接
{
strarr[i]=strarr[i]+"-"+strarr[j];
strarr[j]="@";
break;
}

}

}

}

System.out.println("拼接后的一维数组:"+Arrays.deepToString(strarr));
int len=0;//返回值数组的长度初始化为0.
for(String data:strarr)
{
if(data!="@")len++;
}


String[][] reV=new String[len][];
int pointer=0;
for(String data:strarr)
{
if(data!="@")reV[pointer++]=data.split("-");//对凭借后的字符串进行切割
}
return reV;//返回分组后的二维数组
}

}


/*运行结果:
拼接后的一维数组:[a, abc-acb-bca, @, @, xt, xyz, aa-aa, @, ABC-BAC, @, AcB]
按要求分组后的二维数组:[[a], [abc, acb, bca], [xt], [xyz], [aa, aa], [ABC, BAC]
, [AcB]]
 */

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值