Hallo,
ich habe ein kleines Problem.
Beim Testen habe ich festgestellt,dass meine Aufgabe nicht zu 100 prozent richtig ist.
ich weiß aber nicht,wo der Fehler liegt.
getCharacterWithMinimalFrequency("chhddajjekkb") gibt c statt a zurück.
a ist ja das kleinste Zeichnen mit der kleinsten Frequenz ,nicht c.
Bitte um Hilfe
Herzlich
Bradig
ich habe ein kleines Problem.
Beim Testen habe ich festgestellt,dass meine Aufgabe nicht zu 100 prozent richtig ist.
ich weiß aber nicht,wo der Fehler liegt.
getCharacterWithMinimalFrequency("chhddajjekkb") gibt c statt a zurück.
a ist ja das kleinste Zeichnen mit der kleinsten Frequenz ,nicht c.
Bitte um Hilfe
Herzlich
Bradig
Java:
/**
* Gibt das Zeichen der gegebenen Zeichenkette zurück, dass am seltensten darin vorkommt.
* Sollte es mehrere Zeichen mit minimaler Häufigkeit in der Zeichenkette geben, so wird
* davon das Zeichen mit dem kleinsten Zahlenwert zurückgegeben
* (Tipp: Zusammenhang char <-> int).
* Falls es kein solches Zeichen gibt, wird eine {@link IllegalArgumentException} ausgelöst.
*
* Beispiel:
* Gegeben die Zeichenkette "AABBCCabbccz"
* Das gesuchte Ergebnis lautet hier: 'a'
* (da 'a' genau wie 'z' nur einmal vorkommt, das 'a' aber einem kleineren Zahlenwert
* als dem Zahlenwert von 'z' entspricht)
*
* @param input die Zeichenkette, deren Zeichen mit mininmaler Häufigkeit gesucht wird
* @return das Zeichen mit dem kleinsten Zahlenwert, das am seltensten in der gegebenen
* Zeichenkette vorkommt
*/
final public static char getCharacterWithMinimalFrequency(final String input) {
if(input==null || input.length()==0){
throw new IllegalArgumentException();
}
int min=Integer.MAX_VALUE;
char c='0';
for(int i=0;i<input.length();i++){
int freq=getFrequency(input,input.charAt(i));
if(freq<min ){
min=freq;
c=input.charAt(i);
}
}
return c;
}
final public static int getFrequency(String input,char a){
int s=0;
for(int i=0;i<input.length();i++){
if(input.charAt(i)==a){
s++;
}
}
return s;
}
}