Java :: Aufgabe #351
1 Lösung

Unikat- Liste aus zwei Zeichenketten/Sätzen
Anfänger - Java
von JKooP
- 02.04.2021 um 18:13 Uhr
Gegeben sind zwei Zeichenketten (a, b) bestehend aus Kleinbuchstaben und Leerzeichen.
Es sollen die Wörter in ein neues String- Array überführt werden,
die genau einmal in beiden Zeichenketten vorkommen (Unikate).
Beispiel 1:
a = „der pfannkuchen schmeckt süß“
b = „der pfannkuchen schmeckt salzig“
Lösung: { „süß“, „salzig“ }
Beispiel 2:
a = „apfel apfel“
b = „banane“
Lösung: { „banane“ }
Beispiel 3:
a = „der pfannkuchen schmeckt“
b = „der pfannkuchen schmeckt“
Lösung: { }
Erstelle eine Methode/Funktion, die solch ein String- Array zurückgibt.
Viel Spaß
Es sollen die Wörter in ein neues String- Array überführt werden,
die genau einmal in beiden Zeichenketten vorkommen (Unikate).
Beispiel 1:
a = „der pfannkuchen schmeckt süß“
b = „der pfannkuchen schmeckt salzig“
Lösung: { „süß“, „salzig“ }
Beispiel 2:
a = „apfel apfel“
b = „banane“
Lösung: { „banane“ }
Beispiel 3:
a = „der pfannkuchen schmeckt“
b = „der pfannkuchen schmeckt“
Lösung: { }
Erstelle eine Methode/Funktion, die solch ein String- Array zurückgibt.
Viel Spaß
Lösungen:

/* #351 AUFGABENSTELLUNG Gegeben sind zwei Zeichenketten (a, b) bestehend aus Kleinbuchstaben und Leerzeichen. Es sollen die Wörter in ein neues String- Array überführt werden, die genau einmal in beiden Zeichenketten vorkommen (Unikate). Beispiel 1: a = „der pfannkuchen schmeckt süß“ b = „der pfannkuchen schmeckt salzig“ Lösung: { „süß“, „salzig“ } Beispiel 2: a = „apfel apfel“ b = „banane“ Lösung: { „banane“ } Beispiel 3: a = „der pfannkuchen schmeckt“ b = „der pfannkuchen schmeckt“ Lösung: { } Erstelle eine Methode/Funktion, die solch ein String- Array zurückgibt. Viel Spaß */ import java.util.ArrayList; import java.util.Arrays; public class UnikatListeAusZweiSaetzenV3 { public static void main(String[] args) { String a = "der pfannkuchen schmeckt"; String b = "der pfannkuchen schmeckt"; String[] filteredWords = deleteDuplicates(a, b); System.out.println("Lösung: "+Arrays.toString(filteredWords)); } public static String[] deleteDuplicates(String a, String b) { //String Array aus allen Wörten String[] aWords = a.split(" "); String[] bWords = b.split(" "); int aLen = aWords.length; int bLen = bWords.length; String[] allWords = new String[aLen + bLen]; System.arraycopy(aWords, 0, allWords, 0, aLen); System.arraycopy(bWords, 0, allWords, aLen, bLen); //selben Wörter im Array gruppieren Arrays.sort(allWords); //neuen Array 'duplicateWords' erstellen String duplicateWords[] = new String[allWords.length]; //Duplicate in 'duplicateWords' speichern int counter = 0; for(int i = 0; i < allWords.length; i++) { //'counter' nur bei Duplikaten erhöhen while(i < allWords.length -1 && allWords[i].equals(allWords[i+1])) { i++; duplicateWords[counter++] = allWords[i]; } } //ArrayList aus 'allWords' erstellen ArrayList<String> wordsList = new ArrayList<String>(Arrays.asList(allWords)); //duplicate aus 'wordsList' entfernen for(int i = 0; i < wordsList.size(); i++) { for(int j = 0; j < duplicateWords.length; j++) { wordsList.remove(duplicateWords[j]); } } //wordsList(List) in filteredWords(Array) wandeln String[] filteredWords = new String[wordsList.size()]; wordsList.toArray(filteredWords); return filteredWords; } }