LeetCode 49. Group Anagrams 找相同的字母组成的字符串
2017-04-19 20:10
405 查看
题目:
Given an array of strings, group anagrams together.
For example, given:
Return:
Note: All inputs will be in lower-case.
题目解释:相同字母组成的字符串分到一类,其中也要求字母个数相同,用HashMap来判别
public class Solution {
public List<List<String>> groupAnagrams(String[] strs) {
if(strs==null||strs.length==0) return null;
List<List<String>> result = new ArrayList<List<String>>();
HashMap<String,List<String>> store = new HashMap<String,List<String>>();
for(String s : strs){
char[] mid = s.toCharArray();
Arrays.sort(mid);
String new_s = String.valueOf(mid);
if(store.containsKey(new_s)){
store.get(new_s).add(s);
}else{
List<String> slist = new ArrayList<String>();
slist.add(s);
store.put(new_s, slist);
}
}
Set<String> keyset = store.keySet();
for(String middle : keyset)
result.add(store.get(middle));
return result;
}
}注意点:
1.char[] 转成String 要用String.valueof()函数来转化,如果直接用toString()转换成地址,与预想结果不同
2.Java中Set是一个不包含重复元素的集合,添加相同元素则直接被替换掉,访问直接for遍历即可
Given an array of strings, group anagrams together.
For example, given:
["eat", "tea", "tan", "ate", "nat", "bat"],
Return:
[ ["ate", "eat","tea"], ["nat","tan"], ["bat"] ]
Note: All inputs will be in lower-case.
题目解释:相同字母组成的字符串分到一类,其中也要求字母个数相同,用HashMap来判别
public class Solution {
public List<List<String>> groupAnagrams(String[] strs) {
if(strs==null||strs.length==0) return null;
List<List<String>> result = new ArrayList<List<String>>();
HashMap<String,List<String>> store = new HashMap<String,List<String>>();
for(String s : strs){
char[] mid = s.toCharArray();
Arrays.sort(mid);
String new_s = String.valueOf(mid);
if(store.containsKey(new_s)){
store.get(new_s).add(s);
}else{
List<String> slist = new ArrayList<String>();
slist.add(s);
store.put(new_s, slist);
}
}
Set<String> keyset = store.keySet();
for(String middle : keyset)
result.add(store.get(middle));
return result;
}
}注意点:
1.char[] 转成String 要用String.valueof()函数来转化,如果直接用toString()转换成地址,与预想结果不同
2.Java中Set是一个不包含重复元素的集合,添加相同元素则直接被替换掉,访问直接for遍历即可
相关文章推荐
- leetcode49-Group Anagrams(同构词(相同字母组成的单词)分类)
- 通过键盘输入一串小写字母(a~z)组成的字符串。请编写一个字符串过滤程序,若字符串中出现多个相同的字符,将非首次出现的字符过滤掉。 比如字符串“abacacde”过滤结果为“abcde”。
- [leetcode] 【字符串】 49. Group Anagrams
- 通过键盘输入一串小写字母(a~z)组成的字符串。请编写一个字符串过滤程序,若字符串中出现多个相同的字符,将非首次出现的字符过滤掉。
- 通过键盘输入一串小写字母(a~z)组成的字符串。请编写一个字符串过滤程序,若字符串中出现多个相同的字符,将非首次出现的字符过滤掉。
- LeetCode: 49. Group Anagrams 对颠倒字符串分组
- 通过键盘输入一串小写字母(a~z)组成的字符串。请编写一个字符串过滤程序,若字符串中出现多个相同的字符,将非首次出现的字符过滤掉。
- leetcode_318. Maximum Product of Word Lengths 求两个不相交的字符串的长度乘积的最大值,将字母转换成二进制形式,按位与比较是否有相同字母
- 通过键盘输入一串小写字母(a~z)组成的字符串。请编写一个字符串过滤程序,若字符串中出现多个相同的字符,将非首次出现的字符过滤掉。 比如字符串“abacacde”过滤结果为“abcde”。 要求实现函
- LeetCode-49 Anagrams(返回字符相同的字符串)
- 一个字符串参数(s)由字母(a-z,A-Z)组成, 且最大字符位数为40,要求写一个函数, 返回该参数中连续相同字母的最大个数及该字母,如果最大位数有多个,则返回第一个。例:字符串“aaaddxxxxddddxxxx”,返回值为:“x,4”。
- 字典序问题。在数据加密和数据压缩中常需要对特殊的字符串进行编码。给定的字母表A由26个小写字母组成。该字母表产生的升序字符串中字母从左到右出现的次序与字母在字母表中出现的次序相同,且每个字符最多出现1
- 编写一个程序,输入一串不超过60个字符组成的且不包含换行符的字符串,将字符串中的A到Z的字母按英文字典字母顺序重新排列,排列后的单词的长度要与原始句子中的长度相同,并且要求只对A到Z的字母重新排列,其
- leetcode 49. Group Anagrams 字符串排序 + Map记录
- 两个字符串是否是由相同字母(出现次数也相同)组成的
- 字典序问题。在数据加密和数据压缩中常需要对特殊的字符串进行编码。给定的字母表A由26个小写字母组成。该字母表产生的升序字符串中字母从左到右出现的次序与字母在字母表中出现的次序相同,且每个字符最多出现1
- leetcode 相同字母组成的不同单词归为一类即所谓的变位词
- leetcode题目 聚合相同的字母组成的单词
- 通过键盘输入一串小写字母(a~z)组成的字符串。请编写一个字符串过滤程序,若字符串中出现多个相同的字符,将非首次出现的字符过滤掉
- 字符串问题1:单词是否由相同字母组成