Anagrams
来源:互联网 发布:淘宝关于退货运费规则 编辑:程序博客网 时间:2024/06/08 19:11
Given an array of strings, return all groups of strings that are anagrams.
Note: All inputs will be in lower-case.
10/31
Solutions:
The key is to map all the anagrams to the same code, which can be another string or integer, etc.
Keep that in a hashmap and when the code is hit again, we know that an anagram has shown before.
public class Solution { public List<String> anagrams(String[] strs) { Map<String,String> map = new HashMap<String,String>(); List<String> ans = new ArrayList<String>(); for(String s: strs){ String code = codeStr(s); String found = map.get(code); if(found == null){ map.put(code,s); }else{ if(!found.equals("@")){ // note that none of the input strings has special characters // so @ can be used to label that the first occurance of that string has been included. ans.add(found); map.put(code,"@"); } ans.add(s); } } return ans; } private String codeStr(String s){ int[] cnt = new int[26]; int len = s.length(); for(int i=0; i<len; i++){ char ch = s.charAt(i); cnt[ch-'a'] ++; } StringBuffer buf = new StringBuffer(); for(int x: cnt){ buf.append(x); buf.append(' '); } return buf.toString(); }}
The time complexity is O(mn), where m is the length of the longest word
scan each word and convert to the code, look up in hashmap and add to the answer
The space complexity is O(mn), the worse case is No Anagrams at all, and m is the space it takes to store the code of the longest word.
0 0
- Anagrams
- Anagrams
- Anagrams
- Anagrams
- Anagrams
- Anagrams
- Anagrams
- Anagrams
- Anagrams
- Anagrams
- Anagrams
- Anagrams
- Anagrams
- Anagrams
- anagrams
- Anagrams
- Anagrams
- Anagrams
- iOS UILabel文字自动换行
- iOS IM开发的一些开源、框架和教程等资料
- hive命令行
- 浅谈算法和数据结构: 十一 哈希表
- 用Model-View-ViewModel构建iOS App
- Anagrams
- (iOS)基于XMPP协议的简单IM实现
- ZOJ 3278 8G Island(二分)
- function pointer(函数指针)
- VBA如何统计同一类型的数据的总和
- IOS学习 UIGestureRecognizer相关
- driver--驱动
- [PHP] - 逗号和点号的区别
- 指定控件个数,指定行数,平铺控件