java相同字符组合归类_对相同字母组合的单词进行归类

要求:

Please use javascript (or your favorite programming language) to write a

function that do the following.

Given an array of strings, return an array of arrays of strings that

groups all anagrams.

An anagram is a word that has the same letters, but in different positions.

i.e. given ["cars", "thing", "scar", "dog", "god", "arcs", "the"]

return [["cars", "scar", "arcs"], ["thing"], ["dog", "god"], ["the"]]

大体意思就是:用你熟悉的语言,将上面给出的数据 分成 下面的样子。

给出的单词可以是其他的单词。

思路: 既然是相同单词的不同位置,那么里面所含有的字母应该是一样的。所以想到将已有单词进行先排序(可以是从A-Z),

然后单词相同的为同一组的元素。

废话不多说 看代码:

importjava.util.ArrayList;importjava.util.Arrays;importjava.util.HashMap;importjava.util.Iterator;importjava.util.Map;importjava.util.Map.Entry;/***

*@authorguannan

**/

public classTestPr {static HashMap> strArr = new HashMap>();public static voidmain(String[] args) {

ArrayList ar = new ArrayList();//添加要处理的数组

ar.add("cars");

ar.add("thing");

ar.add("scar");

ar.add("dog");

ar.add("god");

ar.add("arcs");

ar.add("the");//排序活的要得到分组集合

syoArr(ar);//打印集合元素

showArr(strArr);

}private static void showArr(HashMap>strArr2) {//方法一:加强for//for (Map.Entry> entry : strArr2.entrySet()) {//System.out.println("key :" + entry.getKey());//for (int i = 0; i < entry.getValue().size(); i++) {//System.out.println(entry.getValue().get(i));//}//}//方法二:普通遍历

Iterator i =strArr2.entrySet().iterator();while(i.hasNext()){

Entry entry=(Entry)i.next();

System.out.println("key :" +entry.getKey());

ArrayList value = (ArrayList) entry.getValue();for (int k = 0; k

System.out.println(value.get(k));

}

}

}public static void syoArr(ArrayListarr) {

ArrayList ar2 = new ArrayList();

HashMap ha = new HashMap();for (int i = 0; i < arr.size(); i++) {

String stringByOrder=getStringByOrder(arr.get(i).toCharArray());if(ha.containsKey(stringByOrder)) {

ArrayList arrayList =strArr.get(stringByOrder);

arrayList.add(arr.get(i));

strArr.put(stringByOrder, arrayList);

}else{

ha.put(stringByOrder, arr.get(i));

ArrayList ar1 = new ArrayList();

ar1.add(arr.get(i));

strArr.put(stringByOrder, ar1);

}

}

}public static String getStringByOrder(char[] oldChar) {

Arrays.sort(oldChar);returnString.valueOf(oldChar);

}

}

最后的输出结果:

key :eht

the

key :ghint

thing

key :dgo

dog

god

key :acrs

cars

scar

arcs

==========================================

一些小的技巧  献丑献丑

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值