2017-05-12 1 views
2

Ich möchte das erste wiederholte Zeichen aus einer Zeichenfolge finden. Normalerweise mache ich es mit array_intersect in PHP. Gibt es in Java etwas Ähnliches? Zum Beispiel:Gibt es eine Array_Intersect() Entsprechung in Java?

String a=zxcvbnmz 
Desired output : z 
+0

Wozu brauchen Sie diese Werte eigentlich? Vielleicht können wir diese Frage beantworten. –

+0

Versuchen Sie, Java zu lernen, und es gibt diese Frage, um das erste wiederholte Zeichen in einer Zeichenfolge anzuzeigen. Es ist ziemlich einfach in PHP. Gibt es eine integrierte Funktion, mit der ich die Lösung vereinfachen könnte? –

Antwort

5

array_intersect - Ermittelt die Schnittmenge von Arrays (source)


Also in diesem Fall, dass Sie Set::retainAll verwenden können:

Integer[] a = {1,2,3,4,5}; 
Integer[] b = {2,4,5,6,7,8,9}; 
Set<Integer> s1 = new HashSet<>(Arrays.asList(a)); 
Set<Integer> s2 = new HashSet<>(Arrays.asList(b)); 
s1.retainAll(s2); 

Integer[] result = s1.toArray(new Integer[s1.size()]); 
System.out.println(Arrays.toString(result)); 

Ausgabe

[2, 4, 5] 

Sie diesen hier lesen Java, find intersection of two arrays

+0

Super! das funktioniert auch. –

+0

Sie sind herzlich willkommen @RedBottle –

+1

Ive upvoted Sir. Das ist absolut legitim. Idk, warum es downvoted –

2

für dieses Verhalten keine Default-Implementierung Es gibt; Sie können jedoch Ihre eigene Lösung programmieren! Da Sie das erste wiederholte Zeichen finden möchten, können Sie eine HashSet von Character s machen. Wenn Sie durch das Array iterieren, fügen Sie jedes Zeichen zum HashSet hinzu, bis Sie auf ein Zeichen stoßen, das bereits in HashSet ist - dies muss das erste wiederholte Zeichen sein. Beispielcode unter:

public char arrayIntersect(String string) { 
    HashSet<Character> hashSet = new HashSet<>(); 

    for (int i = 0; i < string.length(); i++) { 
     char c = string.charAt(i); 
     if (hashSet.contains(c)) 
      return c; 
     else 
      hashSet.add(c); 
    } 
    return null; 
} 

Dies läuft in O (n) Zeit, als HashSet Lookups in O (1) Zeit.

+1

thnks eine Menge. upvoted. –

Verwandte Themen