Quellcode durchsuchen

Merge pull request #1163 from Zhiyuan-Amos/simplify

Simplify model answers #1119
FridaTveit vor 8 Jahren
Ursprung
Commit
5a42c470d4
Es ist kein Account mit dieser Commiter-Email verbunden

+ 8
- 10
exercises/acronym/.meta/src/reference/java/Acronym.java Datei anzeigen

@@ -1,5 +1,5 @@
1
-import java.util.regex.Matcher;
2
-import java.util.regex.Pattern;
1
+import java.util.Arrays;
2
+import java.util.stream.Collectors;
3 3
 
4 4
 final class Acronym {
5 5
 
@@ -13,14 +13,12 @@ final class Acronym {
13 13
         return acronym;
14 14
     }
15 15
 
16
-    private String generateAcronym(String phrase){
17
-        final Pattern BREAK_WORDS = Pattern.compile("[A-Z]+[a-z]*|[a-z]+");
18
-        final Matcher matcher = BREAK_WORDS.matcher(phrase);
19
-        final StringBuilder stringBuilder = new StringBuilder();
20
-        while (matcher.find()){
21
-            stringBuilder.append(matcher.group().charAt(0));
22
-        }
23
-        return stringBuilder.toString().toUpperCase();
16
+    private String generateAcronym(String phrase) {
17
+        return Arrays.stream(phrase.split("[^a-zA-Z]"))
18
+                .filter(word -> !word.isEmpty()) // Remove empty strings from the result of phrase.split
19
+                .map(word -> word.substring(0, 1)) // Get the first character of each word
20
+                .collect(Collectors.joining()) // Concatenate the characters
21
+                .toUpperCase();
24 22
     }
25 23
 
26 24
 }

+ 4
- 9
exercises/anagram/.meta/src/reference/java/Anagram.java Datei anzeigen

@@ -1,4 +1,5 @@
1 1
 import java.util.*;
2
+import java.util.stream.Collectors;
2 3
 
3 4
 class Anagram {
4 5
 
@@ -9,15 +10,9 @@ class Anagram {
9 10
     }
10 11
 
11 12
     List<String> match(List<String> candidates) {
12
-        List<String> anagrams = new ArrayList<String>();
13
-
14
-        for (String candidate : candidates) {
15
-            if (anagramSubject.anagramOf(candidate)) {
16
-                anagrams.add(candidate);
17
-            }
18
-        }
19
-
20
-        return anagrams;
13
+        return candidates.stream()
14
+                .filter(anagramSubject::anagramOf)
15
+                .collect(Collectors.toList());
21 16
     }
22 17
 
23 18
     static final class AnagramSubject {

+ 2
- 10
exercises/atbash-cipher/.meta/src/reference/java/Atbash.java Datei anzeigen

@@ -30,15 +30,7 @@ class Atbash {
30 30
     }
31 31
 
32 32
     private String stripInvalidCharacters(String input) {
33
-        StringBuilder filteredValue = new StringBuilder(input.length());
34
-
35
-        for (char c : input.toCharArray()) {
36
-            if (Character.isLetterOrDigit(c)) {
37
-                filteredValue.append(c);
38
-            }
39
-        }
40
-
41
-        return filteredValue.toString();
33
+        return input.replaceAll("\\W", "");
42 34
     }
43 35
 
44 36
     private char applyCipher(char input) {
@@ -51,7 +43,7 @@ class Atbash {
51 43
         List<String> words = new ArrayList<>();
52 44
 
53 45
         for (int i = 0; i < value.length(); i += GROUP_SIZE) {
54
-            words.add(i + GROUP_SIZE <= value.length() ? value.substring(i, i + GROUP_SIZE) : value.substring(i));
46
+            words.add(value.substring(i, Math.min(value.length(), i + GROUP_SIZE)));
55 47
         }
56 48
 
57 49
         return String.join(" ", words);