Anagrams变位词
来源:互联网 发布:风速打印软件 编辑:程序博客网 时间:2024/06/01 19:26
题目:
Given an array of strings, return all groups of strings that are anagrams.
Note: All inputs will be in lower-case.
思路:
字符串和在数组中的位置为映射关系,并且要判断重复性,所以选择hashmap
1、依次取出字符串数组中的每个字符串,将其转换成字符数组
2、对字符数组进行排序再转换成字符串
3、判断排序后的字符串,是否是hashmap中的键 ,利用get()
如果不是,则将其存为key,将其在字符串数组中的位置存为value
如果是,则get()返回的是对应的值,将该值对应的数组中的字符串存入StringBuilder,并将hashmap中的该键对应的value置为-1
Java实现:
public class Anagrams {
public static void main(String[] args)
{
String[] s= {"ab","bcd","ba","b","bbb","cbd","ba"};
ArrayList<String> arr=new ArrayList<String>();
arr=anagrams(s);
System.out.println(arr);
}
public static ArrayList<String> anagrams(String[] strs)
{
HashMap<String,Integer> hm=new HashMap<String,Integer>();
ArrayList<String> al=new ArrayList<String>();
for(int i=0;i<strs.length;i++)
{
char[] ch=strs[i].toCharArray();
Arrays.sort(ch);
String s=new String(ch);
if(!hm.containsKey(s))//如果不包含该字符串
{
hm.put(s, i);
}
else//如果已经包含
{
int value=hm.get(s);
if(value!=-1)
{
al.add(strs[value]);
hm.put(s, -1);
}
al.add(strs[i]);
}
}
return al;
}
}
- Anagrams 变位词
- Anagrams 变位词 @LeetCode
- Anagrams 变位词
- 变位词问题/Anagrams
- Anagrams变位词
- [LeetCode] [编程珠玑:变位词]Anagrams
- LintCode Two Strings Are Anagrams 两个字符串是变位词
- String——anagrams 判断字符串是否互为变位词
- 158.Two Strings Are Anagrams-两个字符串是变位词(容易题)
- 438 Find All Anagrams in a String 找出字符串中所有的变位词
- 变位词
- 变位词
- 变位词
- 变位词
- 变位词
- 变位词
- 变位词
- Leetcode #49. Group Anagrams 变位词组合 解题报告
- Java多线程基础--08之 join()
- Unity_相机跟随效果_052
- python对象身份的比较
- 【DSP】TMS320F28035 ADC例程(ePWM+中断)
- 【PAT】【Advanced Level】1036. Boys vs Girls (25)
- Anagrams变位词
- 神经网络与深度学习 1.6 使用Python实现基于梯度下降算法的神经网络和MNIST数据集的手写数字分类程序
- 开发微信小程序:工具准备和发布流程
- 换电脑,重新布置环境
- jquery的总体架构分析及实现示例详解
- R语言画不全词云图问题
- JavaScript中this的指向
- C++之明智审慎地使用private继承(39)---《Effective C++》
- eclipse3.7在线安装hibernate tools安装