249. Group Shifted Strings

今天做的都是E难度的。。懒得写。

这道感觉不是E难度。。

判断是否能SHIFT是使用

if(a.charAt(i) - a.charAt(i-1) == b.charAt(i) - b.charAt(i-1)||(int)Math.abs((a.charAt(i) - a.charAt(i-1)) - (b.charAt(i) - b.charAt(i-1))) == 26 )

俩字母之间相差是一样的,或者+了26,因为Z的下一个是A。

然后好像其实也没什么别的值得说的,总结下就是,按长度先分类,然后同样长度的要再按SHIFT分类。

这题怎么都不像E难度的。。

public class Solution {
    public List<List<String>> groupStrings(String[] strings) 
    {
        List<List<String>> res = new ArrayList<List<String>>();
        
        Map<Integer,List<String>> map = new HashMap<Integer,List<String>>();
        
        for(int i = 0; i < strings.length;i++)
        {
            if(map.containsKey(strings[i].length()))
            {
                map.get(strings[i].length()).add(strings[i]);
            }
            else
            {
                List<String> tempList = new ArrayList<>();
                tempList.add(strings[i]);
                map.put(strings[i].length(),new ArrayList<>(tempList));
            }
        }
        
        for(Integer k: map.keySet())
        {
            List<String> list = map.get(k);
            while(list.size()!=0)
            {
                String a = list.get(0);
                list.remove(0);
                List<String> addingList = new ArrayList<>();
                addingList.add(a);
                for(int i = 0; i < list.size();)
                {
                    if(shiftable(a,list.get(i)))
                    {
                        addingList.add(list.remove(i));
                    }
                    else i++;
                }
                res.add(new ArrayList<String>(addingList));
            }
            
        }
        
        
        return res;
    }
    
    public boolean shiftable(String a, String b)
    {
        int m  = 0, n= 0;
        
        for(int i = 1; i < a.length();i++)
        {
            if(a.charAt(i) - a.charAt(i-1) == b.charAt(i) - b.charAt(i-1)  ||   
               (int)Math.abs((a.charAt(i) - a.charAt(i-1)) - (b.charAt(i) - b.charAt(i-1))) == 26 ) continue;
            else return false;
        }
        
        return true;
        
        
    }
}
posted @ 2016-10-06 13:36  哇呀呀..生气啦~  阅读(136)  评论(0编辑  收藏  举报