Java :: Aufgabe #351 :: Lösung #1

1 Lösung Lösung öffentlich
#351

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ß
#1
vote_ok
von n1again (560 Punkte) - 14.04.2021 um 04:00 Uhr
Quellcode ausblenden Java-Code
/*
#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;
		
	}

	
}

Kommentare:

Für diese Lösung gibt es noch keinen Kommentar

Bitte melden Sie sich an um eine Kommentar zu schreiben.
Kommentar schreiben