Эй, пожалуйста, обратитесь к следующему вопросу: Ссылка на вопрос
Я использовал HashMap для хранения частоты каждого символа, а затем я сохранил частоту в массиве, и мы можем удалить только одну букву из строка и проверьте, содержит ли строка равное количество символов или нет. Мой код проходит все тестовые случаи, кроме следующих, указанных в ссылке:
Ссылка на тестовый случай
static String isValid(String s) {
Map<Character,Integer> freq=new HashMap<Character,Integer>();
List<Integer> list=new ArrayList<>();
char[] chars=s.toCharArray();
for(char c:chars){
Integer i=freq.get(c);
if(i==null){
freq.put(c,1);
}
else{
freq.put(c,i+1);
}
}
for(Integer c:freq.values()){
list.add(c);
}
int[] arr=new int[list.size()];
for(int i=0;i<list.size();i++){
arr[i]=list.get(i);
}
int count=0;
int n=arr.length;
for(int i=0;i<list.size()-1;i++){ //2 2 1 1
if(arr[i]==arr[i+1]){}
else{
if(arr[i]-arr[i+1]==1 || arr[i+1]-arr[i]==1 || arr[i]-arr[i+1]==arr[i]-1 || arr[i+1]-arr[i]==arr[i+1]-1){
arr[i+1]-=1;
count++;
}
else{
return "NO";
}
}
}
if(count==1 || count<1){
return "YES";
}
else
return "NO";
}