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;
}
}
