partiel.pdf
Exercice 1
Question 1
public static Map<String, Integer> wordCount(String... words) {
final Map<String, Integer> wordCount = new HashMap<>();
for(String word : words) {
wordCount.put(word, wordCount.getOrDefault(word, 0) + 1);
}
return wordCount;
}
public static void printWordCount(Map<String, Integer> wordCount) {
for(Map.Entry<String, Integer> entry : wordCount.entrySet()) {
System.out.println(entry.getKey() + ": " + entry.getValue());
}
}
Exercice 2
Question 1
public static void main(String[] args) {
String[] words = {"dormir", "mordir", "parisien", "aspirine", "pinerais", "sapinier"};
Map<String, Integer> anagramCount = new HashMap<>();
Map<String, String> wordToSignature = new HashMap<>();
for (String word : words) {
final String signature = getSignature(word);
anagramCount.put(signature, anagramCount.getOrDefault(signature, 0) + 1);
// Stocker la correspondance entre le mot original et sa version triée
wordToSignature.put(word, signature);
}
printWordCount(words, wordToSignature, anagramCount);
}
public static String getSignature(String word) {
final char[] chars = word.toLowerCase().toCharArray();
Arrays.sort(chars);
return new String(chars);
}
public static void printWordCount(String[] words, Map<String, String> wordToSorted, Map<String, Integer> anagramCount) {
for(String word : words) {
String sortedWord = wordToSorted.get(word);
System.out.println(word + ": " + anagramCount.get(sortedWord));
}
}
Exercice 3
Question 1
public static Node mirrorTree(Node root) {
if(root == null) return null;
final Node newNode = new Node(root.val);
newNode.left = mirrorTree(root.right);
newNode.right = mirrorTree(root.left);
return newNode;
}
Exercice 4