描述
如果一个字符串不含有任何重复字符,我们称这个字符串为 好 字符串。
给你一个字符串 s ,请你返回 s 中长度为 3 的 好子字符串 的数量。
注意,如果相同的好子字符串出现多次,每一次都应该被记入答案之中。
子字符串 是一个字符串中连续的字符序列。
class Solution {
public int countGoodSubstrings(String s) {
if (s.length() < 3) {
return 0;
}
Map<Character,Integer> map = new HashMap<>();
int ans = 1;
for (int i = 0; i < 3; i++) {
char ch = s.charAt(i);
if (map.containsKey(ch)) {
ans = 0;
}
map.put(ch,map.getOrDefault(ch,0) + 1);
}
for (int i = 3; i < s.length(); i++) {
char c1 = s.charAt(i);
char c2 = s.charAt(i-1);
char c3 = s.charAt(i-2);
char c4 = s.charAt(i-3);
map.put(c1,map.getOrDefault(c1,0) + 1);
map.put(c4,map.getOrDefault(c4,0) - 1);
if (map.get(c1) == 1 && map.get(c2) == 1 && map.get(c3) == 1) {
ans++;
}
}
return ans;
}
}