2016-06-20 18 views
-5

Schreiben Sie eine Funktion, die ein Zeichenarray als Eingabe akzeptiert, die Anzahl der Vorkommen für jedes Zeichen im Array zählt und das Ergebnis im Format ausgibt (z. B. {'c', 'e', ​​'e ‘, 'E', 'a', 'q'} würdeZählen von Vorkommen im char-Array

a - * 
c - * 
e - *** 
q - * 

ich mit dem Wörterbuch versuchte es noch einmal, aber wie bekomme ich das Sternchen

class Program 
    { 
    public static void Main() 
    { 
     char[] characters = { 'c', 'e', 'e', 'e', 'a', 'q' }; 
     charFuction(characters); 
    } 

    static Dictionary<char, int> occurrences = new Dictionary<char, int>(); 
    static void charFuction(char[] characters) 
    { 
     foreach(char c in characters) 
     { 
      if (occurrences.ContainsKey(c)) 
      { 
       occurrences[c]++; 
      } 
      else 
      { 
       occurrences.Add(c, 1); 
      } 
     } 
     foreach(char k in occurrences.Keys) 
     { 
      Console.WriteLine(k + " - " + occurrences[k]); 
     } 
    } 
+0

Bitte bearbeiten zu zeigen, was Sie versucht haben. – dasblinkenlight

+0

Hier ist ein Hinweis: Verwenden Sie ein 'Dictionary ' für die Verfolgung der Anzahl von jedem 'char' gesehen. – juharr

Antwort

1

mit LINQ:

public static IEnumerable<string> GetCharCountPlaceholders(IEnumerable<char> chars, char placeholder = '*', string charCountDelimiter = " - ") 
{ 
    return chars 
     .GroupBy(c => c) 
     .OrderBy(g => g.Key) 
     .Select(g => String.Format("{0}{1}{2}" 
     , g.Key 
     , charCountDelimiter 
     , new String(placeholder, g.Count()))); 
} 

Sie könnten es zum Beispiel auf diese Weise nennen:

char[] chars = { 'c', 'e', 'e', 'e', 'a', 'q' }; 
string result = String.Join(Environment.NewLine, GetCharCountPlaceholders(chars)); 

a - * 
c - * 
e - *** 
q - * 
+0

Eigentlich mehr wie 'g => $" {g.Key} - {neue Zeichenfolge ('*', g.Count()} "' – juharr

+0

@juharr: wahr, dachte, dass OP einfach zu faul war, die tatsächliche Anzahl einzufügen für jedes Zeichen, da er die Platzhalteranforderung nicht erwähnt hat –

+0

Ich bin nicht sicher, dass sie faul waren. Ich vermute die Aufgabe bestand darin, dass die Ausgabe wie ein Balkendiagramm aussieht. – juharr

Verwandte Themen