Skip to content

Commit b3a6f5a

Browse files
committed
Added 2 solutions
1 parent 71de8eb commit b3a6f5a

File tree

2 files changed

+76
-0
lines changed

2 files changed

+76
-0
lines changed
Lines changed: 39 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,39 @@
1+
class Solution {
2+
public static List<Integer> findAnagrams(String s, String p) {
3+
List<Integer> indexes = new ArrayList<>();
4+
Map<Character, Integer> pMap = new TreeMap<>();
5+
6+
for (char c : p.toCharArray()) {
7+
pMap.put(c, pMap.getOrDefault(c, 0) + 1);
8+
}
9+
10+
Map<Character, Integer> map = new TreeMap<>();
11+
12+
for (int i=0; i<p.length() && i<s.length(); i++) {
13+
map.put(s.charAt(i), map.getOrDefault(s.charAt(i), 0) + 1);
14+
}
15+
16+
int i = p.length();
17+
while (i < s.length()) {
18+
int ind = i - p.length();
19+
if (map.toString().equals(pMap.toString())) {
20+
indexes.add(ind);
21+
}
22+
23+
map.put(s.charAt(ind), map.getOrDefault(s.charAt(ind), 0) - 1);
24+
if (map.get(s.charAt(ind)) <= 0) {
25+
map.remove(s.charAt(ind));
26+
}
27+
28+
map.put(s.charAt(i), map.getOrDefault(s.charAt(i), 0) + 1);
29+
30+
i++;
31+
}
32+
33+
if (map.toString().equals(pMap.toString())) {
34+
indexes.add(i-p.length());
35+
}
36+
37+
return indexes;
38+
}
39+
}

Medium/Group Shifted Strings.java

Lines changed: 37 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,37 @@
1+
class Solution {
2+
public static List<List<String>> groupStrings(String[] strings) {
3+
Map<String, List<String>> map = new HashMap<>();
4+
5+
for (String s : strings) {
6+
String key = getKey(s);
7+
8+
if (map.containsKey(key)) {
9+
map.get(key).add(s);
10+
}
11+
else {
12+
List<String> list = new ArrayList<>();
13+
list.add(s);
14+
map.put(key, list);
15+
}
16+
}
17+
18+
List<List<String>> ans = new ArrayList<>();
19+
for (List<String> list : map.values()) {
20+
ans.add(list);
21+
}
22+
23+
return ans;
24+
}
25+
26+
private static String getKey(String s) {
27+
StringBuilder sb = new StringBuilder("");
28+
for (int i=1; i<s.length(); i++) {
29+
int diff = s.charAt(i) - s.charAt(i-1);
30+
diff = diff < 0 ? diff + 26 : diff;
31+
32+
sb.append(diff);
33+
}
34+
35+
return sb.toString();
36+
}
37+
}

0 commit comments

Comments
 (0)