Doppelte Einträge aus String entfernen

Crystal_Mountain

Grünschnabel
Hallo liebe Coding Gemeinde!

Ich stehe vor einem Problem dass ich bis jetzt noch nie durchdachte habe; Prinzipiell geht es darum, dass ich Zwecks eines Chiffrealgorithmus (Monoalphabetische Substitution) um aus einem Schlüsselwort übergebenen String ein neues Geheimalphabet erstellen muss.

Das Angleichen der im Alphabet und im Schlüsselwort enthaltenen Buchstaben stellt kein Problem dar, doch wie entferne ich doppelte Einträge (z.B. wenn als Schlüssel "Hallo" übergeben wird) aus einem String? Ich habe die API zu String und auch StringBuilder durchforstet, jedoch gibt es keine Methode die einem "unique" gleichen würde.

Wie könnte ich auf effiziente Art und Weise solche doppelten Einträge aus einem String entfernen? :confused:

Bedanke mich schon jetzt recht herzlichst für die Hilfe!
 
Hi,

bin mir nicht sicher, ob Du das gemeint hast.
Aber falls jeder Buchstabe nur einmal vorkommen soll, könntest Du das so machen:

Java:
    private String uniq(String str) {
    	StringBuffer sb = new StringBuffer();
		Map<String, Integer> map = new HashMap<String, Integer>();
		for(int i=0; i < str.length(); i++) {
			String s = str.substring(i, i+1);
			if(map.containsKey(s)) {
		        map.put(s, (Integer)map.get(s) + 1);
			}
			else {
				map.put(s, 1);
				sb.append(s);
			}
		}
		return sb.toString();
    }

Gruß
joschi
 
Hi,

Code:
        public static void add(String aString) {
		if( ! stringBuffer.toString().contains(aString)){
			stringBuffer.append(aString);
		}
	}

...würde das Problem lösen, wenn ich Dich richtig verstanden habe.
Egal ob Buchstabe oder Substring, aString wird nur geadded, wenn
er nicht im bereits bestehenden Buffer enthalten ist.
Für die Substitution selbst kann man sich dann noch ein Mapping bauen.

Grüße, Tim
 
Zuletzt bearbeitet:
Zurück