一道关于单词归类的算法题简单求解

 前不久在ITEYE上看到一题算法题,看了上面很多了给出了不少方案,但大多都是代码一大堆,比较难理解,这里我也写了一个,欢迎各位高手指点。

 

题目:给定一系列的单词,要求把字母个数和字母都相同的单词规类为一组。比如 top,fuck,you,oh,yes,pot,foot,toof,因为top和pot两个单词字母的数量相同,而且它们包括的字母都是一样的,只是字母顺序不一样,这样的单词我们都归为一组。foot与toof也认为是同一组。

 

思路:第一步,得到单词系列的数组,数组的元素是一个单词。

         第二步,创建一个map,再遍历每个数组。

         第三步,读取每个元素,将其转化为char[]数组,将其排序后,再转化为String 作为map的key值,把未排序的元素值作为value  存放到map中。存放时先检查该key对应的元素是否已经存在,如果存在,就将原来的值取出,再上当前值重新放回map中。

         第四步,遍历map的所所有value,即可以得到分组后的结果。

 

		String str="top,fuck,you,oh,yes,pot,foot,toof";
		String[] strTem=str.split(",");
		Map map=new HashMap();
		for(int i=0;i<strTem.length;i++)
		{
			String temVal=strTem[i];
			char[] temChar=temVal.toCharArray();
			Arrays.sort(temChar);
			String key=new String(temChar);
			if(map.get(key)==null)
			{
			    map.put(key,temVal);
			}else{
				map.put(key,map.get(key).toString()+" "+temVal);
			}
		}
        System.out.print(map.toString());

我的网店,有劳各位参观参观 http://mrs-x.taobao.com/

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值