最长子字符串

给定一个字符串 s 和正整数 n,
请使用你熟悉的编程语言输出 s 中包含不超过 n 种字符的最长子串,
如 s=“uabbcadbaef”,n=4 时应该输出 “abbcadba”。

package Test;
import java.util.ArrayList;
public class LongSr {
// 判断一个字符串里面有几个不同字目
public int countDiff(String s){
ArrayList<Character> arr = new ArrayList<>();
for(int i=0;i<s.length();i++){
char ch = s.charAt(i);
if(arr.contains(ch) == false){
arr.add(ch);
}
}
return arr.size();
}
public String getLongestStr(String s,int n){
String res = "";
int length = s.length();
for(int i=0;i<length-n;i++){
for(int j=i;j<length;j++){
String str_tmp = s.substring(i,j);
if (countDiff(str_tmp) <=n && str_tmp.length()>res.length()){
res = str_tmp;
}
}
}
return res;
}
public static void main(String[] args) {
String s = "uabbcadbaef";
int n = 4;
LongSr ls = new LongSr();
String res = ls.getLongestStr(s,n);
System.out.println(res);
}
}