249. Group Shifted Strings
Group Shifted Strings
Solution
public class Solution {
public List<List<String>> groupStrings(String[] strings) {
List<List<String>> result = new ArrayList<>();
if (strings == null || strings.length == 0) return result;
Map<String, List<String>> map = new HashMap<>();
for (String s : strings) {
StringBuffer pattern = new StringBuffer();
pattern.append("*");
for (int i = 1; i < s.length(); i++) {
int diff = s.charAt(i) - s.charAt(i - 1);
while (diff <0) {
diff += 26;
}
pattern.append(diff);
pattern.append("*");
}
List<String> current = new ArrayList<>();
current.add(s);
map.merge(pattern.toString(), current, (a, b) -> {
a.addAll(b);
return a;
});
}
for (List<String> val : map.values()) {
result.add(val);
}
return result;
}
}Last updated