-
Notifications
You must be signed in to change notification settings - Fork 0
Group Shifted Strings
Tim_Gao edited this page Sep 18, 2016
·
1 revision
- az, ba has the same pattern
public class Solution {
private String getPattern(String str){
StringBuilder sb = new StringBuilder();
for (int i=1; i<str.length(); ++i){
sb.append((str.charAt(i) - str.charAt(i-1) + 26) % 26);
}
return sb.toString();
}
public List<List<String>> groupStrings(String[] strings) {
HashMap<String, ArrayList<String>> hm = new HashMap<>();
ArrayList<String> single = new ArrayList<>();
for (String str : strings){
if(str.length() == 1){
single.add(str);
} else {
String patt = getPattern(str);
if(!hm.containsKey(patt)){
hm.put(patt, new ArrayList<>());
}
hm.get(patt).add(str);
}
}
ArrayList<List<String>> res = new ArrayList<>();
if (single.size()!=0){
res.add(single);
}
Iterator it = hm.entrySet().iterator();
while(it.hasNext()){
Map.Entry me = (Map.Entry) it.next();
res.add((ArrayList<String>)me.getValue());
}
return res;
}
}