一、题目
二、代码
滑动窗口。注意substring的用法,第二个参数是结尾下标,而且不包括这个下标。
class Solution {
//定义一个长度为3的滑动窗口
public int countGoodSubstrings(String s) {
int windowLen = 3;
int len = s.length();
int goodNum = 0;
for(int i = 0; i < len - windowLen + 1; i++){
//substring该子字符串从指定的 beginIndex 处开始,到指定的 endIndex-1处结束。
String substr = s.substring(i, i + windowLen);
Set<Character> goodSet = new HashSet<>();
for(int j = 0; j < windowLen; j++){
if(goodSet.contains(substr.charAt(j))){
break;
}else{
goodSet.add(substr.charAt(j));
}
}
if(goodSet.size() == 3){
goodNum++;
}
}
return goodNum;
}
}
当然,还有一个做法直接一次遍历,直接判断三个字符是否都不相同。