LeetCode-49 Anagrams(返回字符相同的字符串)
2015-04-29 18:07
232 查看
LeetCode-49 Anagrams(返回字符相同的字符串)
Given an array of strings, return all groups of strings that are anagrams.
Note: All inputs will be in lower-case.
一开始理解错题意。WA了好多次。。
题目是指 返回字符串数组内 所有组成字符均相同的字符串。
比如 abc cba add 这三个字符串就应该返回 abc cba。
代码:
Runtime: 394 ms
一开始是不断的想通过其他方法来实现。最后还是觉得网上这个方法比较好。。
分析:先排序数组,排序后符合情况的数组必然是相同的字符串。通过一个HashMap的key来存放这些数组,value来存放其位置。让发现有相同字符串出现时,将该value即位置上的字符串添加进list中,这个是为了处理第一次出现的字符串位置。
Given an array of strings, return all groups of strings that are anagrams.
Note: All inputs will be in lower-case.
一开始理解错题意。WA了好多次。。
题目是指 返回字符串数组内 所有组成字符均相同的字符串。
比如 abc cba add 这三个字符串就应该返回 abc cba。
代码:
public class Solution { public List<String> anagrams(String[] strs) { List<String> list = new ArrayList<String>(); HashMap<String, Integer> map = new HashMap<>();; for (int i = 0; i < strs.length; i++) { char[] array = strs[i].toCharArray(); Arrays.sort(array); String sav = new String(array); if (!map.containsKey(sav)) { map.put(sav,i); }else { int loc = map.get(sav); if (loc != -1) { list.add(strs[loc]);//将第一次出现的字符串位置添加进list。 } list.add(strs[i]); map.put(sav,-1); } } return list; } }
Runtime: 394 ms
一开始是不断的想通过其他方法来实现。最后还是觉得网上这个方法比较好。。
分析:先排序数组,排序后符合情况的数组必然是相同的字符串。通过一个HashMap的key来存放这些数组,value来存放其位置。让发现有相同字符串出现时,将该value即位置上的字符串添加进list中,这个是为了处理第一次出现的字符串位置。
相关文章推荐
- 每天一道LeetCode-----将字符串的连续相同的字符合并成一个字符后加个数
- LeetCode number387 字符串第一个没有相同的字符
- C语言strpbrk()函数:返回两个字符串中首个相同字符的位置
- LeetCode | 767. Reorganize String调整字符串使得字符串相同字符不相邻
- leetcode_28. Implement strStr() 字符串模式匹配,返回匹配的首字符位置
- LeetCode 49. Group Anagrams 找相同的字母组成的字符串
- 一个字符串参数(s)由字母(a-z,A-Z)组成, 且最大字符位数为40,要求写一个函数, 返回该参数中连续相同字母的最大个数及该字母,如果最大位数有多个,则返回第一个。例:字符串“aaaddxxxxddddxxxx”,返回值为:“x,4”。
- 如果字符串的一个子串(其长度大于 1)的各个字符均相同,则称之为等值子串。试设计一算法,求出串S中的最大等值子串 函数返回最大等值子串的长度,如果没有则返回1。 例如: 若S= “abc123abc1
- leetcode49-Group Anagrams(同构词(相同字母组成的单词)分类)
- LeetCode 49 Group Anagrams(字符串分组)
- [leetcode 318]Maximum Product of Word Lengths--判断两个字符串是否有相同的字符
- 字符串查找匹配位置-在输入的字符串中查找特定字符,查到返回位置和个数
- 字符串匹配算法实现(两个字符串中含有的字符和个数都相同)
- 华为:编写一个字符串过滤程序,若字符串中出现多个相同的字符,将非首次出现的字符过滤掉
- leetcode205---Isomorphic Strings(相同结构的字符串)
- 判断两个字符串是否由相同字符组成
- response.getWriter().write()返回的字符串中多了个2000字符的问题
- Leetcode 49: Group Anagrams
- leetcode[49]Anagrams
- 查找输入字符串中第一个相同的字符,并显示该字符