zoukankan      html  css  js  c++  java
  • [leetcode] Anagrams

    Given an array of strings, return all groups of strings that are anagrams.

    Note: All inputs will be in lower-case.

    https://oj.leetcode.com/problems/anagrams/

    思路:anagram的题目,CC150也有,如何判断是anagram,一种是用hashmap存字符数来判断,另一种是排序后字符相同来判断。这个题目采用排序后的字符作为hashmap的key,是anagram的都归为一组。

    import java.util.ArrayList;
    import java.util.Arrays;
    import java.util.HashMap;
    
    public class Solution {
    	public ArrayList<String> anagrams(String[] strs) {
    		if (strs == null)
    			return null;
    		ArrayList<String> res = new ArrayList<String>();
    		HashMap<String, ArrayList<String>> group = new HashMap<String, ArrayList<String>>();
    
    		for (String each : strs) {
    			char[] tmp = each.toCharArray();
    			Arrays.sort(tmp);
    			String key = new String(tmp);
    			if (group.containsKey(key)) {
    				group.get(key).add(each);
    			} else {
    				ArrayList<String> newList = new ArrayList<String>();
    				newList.add(each);
    				group.put(key, newList);
    			}
    
    		}
    
    		for (String each : group.keySet()) {
    			if (group.get(each).size() > 1) {
    				res.addAll(group.get(each));
    			}
    		}
    
    		return res;
    
    	}
    
    	public static void main(String[] args) {
    		System.out.println(new Solution().anagrams(new String[] { "abc", "acb",
    				"cba", "aaa", "bb", "bb" }));
    	}
    
    }

    第二遍记录:

    public class Solution {
        public List<String> anagrams(String[] strs) {
            List<String> res = new ArrayList<String>();
            if(strs==null||strs.length==0)
                return res;
            
            HashMap<String,List<String>> group = new HashMap<String,List<String>>();
            for(String each:strs){
                char[] charArr = each.toCharArray();
                Arrays.sort(charArr);
                String newStr = new String(charArr);
                if(group.containsKey(newStr)){
                    group.get(newStr).add(each);
                }else{
                    List<String> tmp = new ArrayList<String>();
                    tmp.add(each);
                    group.put(newStr,tmp);
                }
                
            }
            
            for(String each:group.keySet()){
                if(group.get(each).size()>1)
                    res.addAll(group.get(each));
            }
            return res;
        }
    }

    参考:

    http://blog.csdn.net/linhuanmars/article/details/21664747

  • 相关阅读:
    css3发光闪烁的效果
    移动端滚动加载数据实现
    JS生成一个简单的验证码
    百度地图在IOS中不显示
    vue开发神奇vue-devtools的安装
    gulp搭建服务
    webstorm中配置ES6语法
    centos 7 中防火墙的关闭问题
    centos命令
    Cesium加载影像
  • 原文地址:https://www.cnblogs.com/jdflyfly/p/3810765.html
Copyright © 2011-2022 走看看