Във връзка с задача 1. Count Chars in a String
Задачата е 1. Count Chars in a String, от Exercises: Dictionaries, Lambda and LINQ, към тех-модула.
Write a program which counts all characters in a string except space (' ').
Print all occurrences in the following format:
{char} -> {occurrences}
Кодът ми е тромав, защото не мога да си спомня къде и как да премахна празните чарактери още при сплитването.
Но не би трябвало да ми дава нула точки на отговора на задачата.
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
public class Program
{
public static void Main()
{
List<string> first = Console.ReadLine()
.ToLower()
.Split()
.ToList();
if (first.Count > 1)
{
Merge(first);
}
char[] word = first[0].ToCharArray();
Dictionary<char, int> numberChar = new Dictionary<char, int>();
foreach (var kvp in word)
{
if (!numberChar.ContainsKey(kvp))
{
numberChar[kvp] = 0;
}
numberChar[kvp]++;
}
foreach (var kvp in numberChar)
{
Console.WriteLine("{0} -> {1}", kvp.Key, kvp.Value);
}
}
public static void Merge (List<string> first)
{
StringBuilder currentWord = new StringBuilder();
for(int i = 0; i < first.Count; i++)
{
currentWord.Append(first[i]);
}
first.RemoveRange(0, first.Count -1);
first.Insert(0, currentWord.ToString());
}
}
nqkoi reshenie na java?
Ето решение на Java, но не използвам stream API-то.
https://pastebin.com/Bwgcev6t
package Exercise; import java.util.*; public class CountCharsInAString { public static void main(String[] args) { Scanner scanner = new Scanner(System.in); String line = scanner.nextLine(); List<String> word = new ArrayList<>(Arrays.asList(line.split(""))); Map<String, Integer> lettersCount = new LinkedHashMap<>(); int count = 1; for (String s : word) { if (s.equals(" ")) { continue; } if (!lettersCount.containsKey(s)) { lettersCount.put(s,count); } else { lettersCount.put(s,lettersCount.get(s) + 1); } } for (Map.Entry<String, Integer> stringIntegerEntry : lettersCount.entrySet()) { System.out.println(stringIntegerEntry.getKey() + " -> " + stringIntegerEntry.getValue()); } } }Ето още едно Java решение. Дава 100/100 в Judge
import java.util.LinkedHashMap; import java.util.Map; import java.util.Scanner; public class CountCharsInString { public static void main(String[] args) { Scanner sc = new Scanner(System.in); char[] words = sc.nextLine().toCharArray(); Map<Character, Integer> charCount = new LinkedHashMap<>(); for(char chars : words){ if (chars == ' '){ continue; } if (!charCount.containsKey(chars)){ charCount.put(chars, 1); }else{ Integer value = charCount.get(chars); charCount.put(chars, value + 1); } } for (Map.Entry<Character, Integer> entry : charCount.entrySet()) { System.out.printf("%s -> %d\n", entry.getKey(), entry.getValue()); } } }