2017-02-14 1 views
0

Mein Code funktioniert gut und dispaly die Anzahl der maximal auftretenden Zeichen, aber nicht das maximale Zeichen anzuzeigen. sagen Sie mir auch intelligente Art und Weise Code des Schreibens ich bin Anfängermaximal vorkommendes Zeichen mit Hash-Tabelle

void checkMax1(String str1){ 
    final int hash=256; 
    char max_occ=str1.charAt(0); 

    int asc[]=new int[hash]; 
    int n=str1.length(),max_count=-1; 
    char Chars[]=str1.toCharArray(); 
    for(int i=0;i<n;i++){ 
     asc[Chars[i]]++; 
    } 
    for(int i=0;i<hash;i++){ 
     if(max_count<asc[i]){ 
      max_count=asc[i]; 
      max_occ=(char)asc[i]; 
      System.out.println(asc[i]); 
     } 

    } 
    System.out.println(max_count+""+max_occ); 
} 

}

Antwort

0

Gerade die Zeile das Zeichen

max_occ = (char) i; 
Spar

Der Index ist der Code des Zeichens, der Wert in asc die Zählung für diesen Charakter.

Die Variablennamen Ihres Codes sind ziemlich schwer zu verstehen, vielleicht ein bisschen besser (IMHO):

final int MAX = 255; 

int[] count = new int[MAX]; 
char maxChar = ... 
int maxCount = -1; 

und Variablen, durch Konvention, mit Kleinbuchstaben, Klassen- und Interface-Namen beginnen mit Großbuchstaben ...

+0

dank bro kann ich das gleiche tun, ohne String Ändern – MOIN

+0

verkohlen können Sie die Zeichen zugreifen, indem Sie 'str1.charAt (i)' –

0

Sie nur eine zusätzliche benötigen, wenn

if(max_count<asc[i]){ 
    max_count=asc[i]; 
    System.out.println(asc[i]); 
    if(max_occ<(char)asc[i]){ 
    max_occ=(char)asc[i] 
     } 
} 
0

können Sie es in derselben ersten Schleife fangen

for (int i=0; i<n; i++) 
    if (++asc[Chars[i]] > max_occ) { 
    ++max_occ; 
    max_char = Chars[i]; 
    } 
Verwandte Themen