ich auf die folgende Frage kam die Codierung Interview in Cracking, 1.1:die Codierung Interview Cracking, 4. Aufl, 1,1
einen Algorithmus implementieren, um zu bestimmen, ob eine Zeichenfolge alle eindeutigen Zeichen. Was, wenn Sie keine zusätzlichen Datenstrukturen verwenden können?
Hier ist meine Lösung:
public boolean allUnique(String input) {
HashSet<Character> set = new Hashset<Character>();
char c;
for (int i = 0; i < input.length(); i++) {
c = input.charAt(i);
if (set.contains(c)) return false;
set.add(c);
}
return true;
meine Lösung funktioniert, und wie effizient ist es? Ich habe mich auch gefragt, ob jemand ASCII erklären könnte und wie es für dieses Problem relevant ist, da es in der Buchlösung kurz erwähnt wurde. Ist das der Grund, warum wir jedes Zeichen im String in eine Ganzzahl schreiben können?
Vielen Dank!
Was ist mit dem Teil 'Was ist, wenn Sie keine zusätzlichen Datenstrukturen verwenden können?' –
Ihre Frage scheint viele mögliche Antworten zu enthalten, und Ihr Code sieht so aus, als müsste er laufen. Vielleicht gehört das zu [Code Review] (http://codereview.stackexchange.com). –
ASCII ist nur ein Zeichensatz. Genau wie Unicode ist ein anderer Zeichensatz. ASCII wird normalerweise im Bereich 0-127 verwendet, während 128-256 normalerweise nicht verwendet wird. Da Sie ein assoziatives Array haben können, wäre es dann nicht besser, das zu verwenden und nur jeden Ort zu erhöhen? Dann, wenn der Array-Eintrag größer als eins (1) ist, haben Sie ein Duplikat. Nur ein Gedanke. (Bearbeiten): Ah! Ein boolesches Array ist genauso gut. :-) –