描述
给你一个由小写字母组成的长度为n的字符串 S ,找出所有长度为 k 且包含重复字符的子串,请你返回全部满足要求的子串的数目。
数据范围: 2 \le k \le 4002≤k≤400 ,5\le n \le 9005≤n≤900
进阶: 时间复杂度O(n)O(n),空间复杂度O(n)O(n)
分析
一边遍历一遍加入map会更好
import java.util.*;
public class Solution {
public int numKLenSubstrRepeats (String s, int k) {
int i = 0, j = k;
int count = 0;
while(j <= s.length()){
String str = s.substring(i,j);
if(judge(str)){
count++;
}
i++;
j++;
}
return count;
}
public boolean judge(String s){
Map<Character, Integer> map = new HashMap<>();
for(int i = 0; i < s.length();i++){
if(map.containsKey(s.charAt(i))){
return true;
}
map.put(s.charAt(i),0);
}
return false;
}
}