Feedback

VB - Permutation nachweisen

Veröffentlicht von am 11.03.2010
(2 Bewertungen)
Auf diese Weise lässt sich überprüfen, ob a eine Permutation von b ist.

http://de.wikipedia.org/wiki/Permutation

GFU-Schulungen  [Anzeige]

ASP.NET Core - Der Einstieg

In nur 3 Tagen lernen Sie, wie man mit ASP.NET Core und den Technologien MVC, Entity Framework, WebAPI und Razor professionelle Web-Anwendungs-Architekturen aufbaut. Diese Schulung ist der perfekte Einstieg, um datengetriebene und präsentations-orientierte Applikationen auf Basis der ASP.NET Core Plattform zu erstellen.

VB.NET Komplett

Sie stehen vo der Aufgabe, individuelle Anwendungen für Windows zu schreiben. Hier ist VB.NET die optimale Sprache. Sie erlernt sich recht leicht und passt sich komplett in die .NET Umgebung von Microsoft ein. Nach der Schulung entwickeln Sie anwenderfreundliche Programme in VB.NET . Mit den objektorientierten Modellen in VB.NET erzeugen Sie außerdem wiederverwendbare Komponenten.

Function is_perm(ByVal a As String, ByVal b As String) As Boolean
    If a.Length <> b.Length Then Return False

    Dim ax, bx As Byte
    For Each c In a
        ax += CByte(Val(c))
    Next

    For Each c In b
        bx += CByte(Val(c))
    Next

    If ax <> bx Then Return False

    Dim al, bl As New ArrayList
    For Each c In a
        al.Add(c)
    Next
    al.Sort()

    For Each c In b
        bl.Add(c)
    Next
    bl.Sort()

    For x As Byte = 0 To al.Count - 1
        If al(x) <> bl(x) Then Return False
    Next

    Return True
End Function

6 Kommentare zum Snippet

Klemens Nanni schrieb am 15.04.2010:
Durch die Ergänzung in Zeile 8-13 wurde die Rechenzeit knapp halbiert. Denn stimmt die Quersumme nicht überein, brauchen wir gar nicht mit Listen arbeiten.
keco schrieb am 18.04.2010:
Hallo. Für übliche Wörter (<16 Zeichen) ist die Methode mit der Ergänzung aber sehr viel langsamer als ohne. Mit welchen Daten hast du das denn getestet?
Klemens Nanni schrieb am 20.04.2010:
Mit Zahlen, alle < 10^9, also nicht mehr als neun Zeichen.
Klemens Nanni schrieb am 20.04.2010:
Ja, da ich soetwas überwiegend für mathematische Dinge verwende, habe ich an die Anwendung auf Zeichketten weniger gedacht. Ich werde prüfen, ob es dadurch langsamer wird. Wenn ja, wird's verbessert.
keco schrieb am 21.04.2010:
Ich denke aber nicht, dass man mehrere Tausend Permuationen von extrem hohen Zahlen bzw. Zeichenketten mit vielen Zeichen berechnen muss. Bei den einigen Millisekunden kommt es da auch nicht drauf an. Bei 2 Methoden, die ich getestet habe gab es in den niedrigen Bereichen kaum Unterschiede und bei Zeichenketten mit 1000 Zeichen Unterschiede von 100 Millisekunden. Aber wer prüft so etwas auf Permutation?
Klemens Nanni schrieb am 21.04.2010:
Du hast Recht, sowetwas ist eher unüblich. Ich bin aber jemand, der immer versucht, den bestmöglichen Weg zu finden.
 

Logge dich ein, um hier zu kommentieren!