浏览 1314 次
锁定老帖子 主题:一道关于单词归类的算法题简单求解
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
|
|
---|---|
作者 | 正文 |
发表时间:2012-02-24
前不久在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()); 声明:ITeye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
推荐链接
|
|
返回顶楼 | |