Windows Azure Cloud Storage ermöglicht es Ihnen bereits ab 0,10€ pro GB/Monat die Vorteile der Cloud zu nutzen.
Willkommen bei dotnet-snippets.de! Snippet hinzufügen Login Registrieren
Snippets in der Datenbank: 1550 | Anzahl registrierter User: 1840 | Besucher online: 277
Hauptmenü
Home
Top Ten
Zufälliger Snippet
FAQs
.NET Community
dotnet-forum.de
dotnet-kicks.de
Social

RSS Feeds
Rss Alle Snippets
Rss C#
Rss VB.NET
Rss C++
Rss ASP.NET
Partner
Member of Microsoft Community Leader/Insider Program (CLIP)

Permutation nachweisen


Autor: Klemens Nanni
Sprache: VB.NET
Bewertung:
noch nicht bewertet
Anzahl der Aufrufe: 5480
  
Kick it on dotnet-kicks.de  

Beschreibung:

Auf diese Weise lässt sich überprüfen, ob a eine Permutation von b ist.

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



Abgelegt unter: Permutation, Arraylist, vergleichen, compare, prüfen, proof, String, Zahlen, number, mathe.



Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
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
Sie haben Fragen zu diesem Snippet oder brauchen Hilfe bei der .NET Entwicklung?
Freundliche und kompetente Entwickler helfen Ihnen gern weiter im Forum für .NET Entwicklung.



Kommentare:
(Zum Schreiben von Kommentaren bitte anmelden.)

Klemens Nanni schrieb am:  15.04.2010 21:00:38

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 00:05:32

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 16:27:35

Mit Zahlen, alle < 10^9, also nicht mehr als neun Zeichen.
Klemens Nanni schrieb am:  20.04.2010 16:29:23

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 17:22:22

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 20:14:23

Du hast Recht, sowetwas ist eher unüblich. Ich bin aber jemand, der immer versucht, den bestmöglichen Weg zu finden.


Diese Snippets könnten für Sie interessant sein:
[VB.NET] Pandigitale Zahlen
[C#] Convert an ArrayList into an array
[C#] Sort and search an ArrayList.
[C#] Arraylist in Textdatei schreiben
[C#] Textdatei in Arraylist speichern
[C#] Datei einlesen und als ArrayList jede Zeile zurückliefern
[C#] ArrayList zu string array konvertieren
[C#] Compare Files
[C#] Dateien vergleichen
[C#] Binärvergleich zweier Dateien
[C#] prüfen ob String eine gültige IP ist
[C#] String auf Emailadresse prüfen
[C#] Windows Passwort überprüfen [Übersetzung]
[C#] Prüfen, ob exklusiver Zugriff auf eine Access-DB möglich ist
[ASP.net] Datei nach Bildupload prüfen
[C#] Kollision von zwei rechteckigen Objekten prüfen
[C#] Prüfen, ob eine Datei ausfürbar ist (.exe, .bat, etc.)
[C#] String auf erlaubte Zeichen prüfen
[C#] Prüfen ob aktueller Benutzer Administrator ist
[C#] Herausfinden, ob ein Programm (ProgramName) installiert ist.
[C#] Property auf Attribute prüfen Property.HasAttribute
[VB.NET] Das Sieb des Eratosthenes
[VB.NET] Effizientere Primzahlprüfung großer Zahlen
[VB.NET] Das Sieb von Atkin
[VB.NET] Das Sieb von Atkin (2)
[VB.NET] Das Sieb von Atkin (2) - aktuell
[C#] Prüfung, ob bestimmtes Bit in Byte gesetzt ist.
[C#] Setzt ein bestimmtes Bit in einem Byte
[C#] Hexcode eines Strings ausgeben
[VB.NET] Größe eines Strings berechnen
[C#] String bei bestimmten Zeichen splitten
[C#] Encode To ASCII - Buchstaben in Ascii-Werte umwandeln
[C#] Gibt den MD5 Hash eines Stings als String zurück.
[C#] String in Byte Array und zurück wandeln
[VB.NET] Den SHA1 Hash eines Strings ermitteln
[VB.NET] Den MD5 Hash eines Strings ermitteln
[C#] Wandelt ein Bytearray in einen Binärstring
[VB.NET] Text auf Bild zeichnen
[C#] SHA-1 Hash eines Strings erzeugen
[VB.NET] Strings schnell zählen
[VB.NET] Pfad kürzen
[VB.NET] Einfache Ähnlichkeitssuche (SQL)
[C#] Pfad kürzen
[C#] IsPositiveInteger as Extension Method
[C#] Datum und Zeit als String
[C#] String spiegeln
[VB.NET] String spiegeln
[C#] Erweiterung für Stringumwandlungen
[C#] Image in string wandeln und zurück
[C#] Strings komprimieren und dekomprimieren
[C#] CamelCase in Title Case konvertieren
[C#] Text zentriert in die Konsole schreiben
[VB.NET] Strings komprimieren und dekomprimieren
[C#] Fuzzy Suche
[VB.NET] Rows eines DataGridView in ein String-Array konvertieren
[C#] kontrolliert ob String eine gültige GUID ist
[C#] HTML aus einem String entfernen
[C#] byte-String in byte wandeln
[C#] Formelevaluierung aus RPN Form
[C#] Erzeugen eines zufälligen Strings
[C#] mehrfach vorkommende Worte entfernen
[C#] Determines whether the specified input is numeric
[C#] Prozentual Textvergleichen
[C#] doppelte Leerzeichen aus einem String entfernen
[C#] Zählt wie oft ein String in einem String vorkommt.
[C#] String kürzen ohne ein Wort abzuschneiden
[C#] Austauch von kritischen Zeichen in einem String...
[VB.NET] String in Byte Array und zurück wandeln
[C#] Gross- Kleinbuchstaben in String schnell zählen
[VB.NET] Listen, Arrays, Strings konvertieren
[C#] CRC32-Hash eines Strings
[VB.NET] CRC32-Hash eines Strings
[C#] Größe eines Strings berechnen
[VB.NET] String Splitten
[C#] Capitalize the first letter of every word
[VB.NET] Textdatei lesen und schreiben (String, StringArray, etc...)
[C#] Text2Bitmap (String in Bild umwandeln)
[C#] Double in String umwandeln (mit InvariantCulture)
[C#] String in Double umwandeln (mit InvariantCulture)
[C#] Convert MAC string to byte array
[C#] Reverse String
[C#] Stellt fest ob ein String ein Palindrom ist
[VB.NET] String umkehren
[C#] Letztes Wort aus einem String ermitteln
[C#] Erstes Wort aus einem String ermitteln
[VB.NET] List all controls by using the name of the controls
[C#] Alle E-Mail Adressen aus einem String bzw. Text filtern
[C#] StringSplitter
[C#] Fundstelle eines Suchbegriffs markieren
[C#] Initialisiert alle String-Properties
[C#] MD5 Verschlüsselung
[C#] HTML Tags aus String entfernen
[C#] Geschachtelte Methode zur String-Bearbeitung
[C#] Byte Größenangaben als String formatieren (KB, MB, GB, ...)
[C#] Implode und Trim für String-Enumerationen (Extension Method)
[C#] String zu MD5
[C#] Tabulatorzeichen durch Leerzeichen ersetzen
[C#] String in einzelne Wörter aufteilen und Wörter zählen
[VB.NET] Passwortgenerator
[C#] Render MVC Action as string
[C#] Namen von Klassenmember als String ermitteln
[C#] IncreaseString
[VB.NET] String uebers Netzwerk oder Internet and einen PC senden
[C#] String to char Tarnung
[C#] C# XOR Crypt
[C#] String-Formatierung für Faule: Erweiterungsmethode
[C#] Darstellung eine ASP.NET Steuerelement als HTML-String
[C#] PrimeNumberGenerator
[C#] PrimeNumberReader
[C#] Integers
[VB.NET] Zahlen Addition als Spam Schutz
[C#] Zahlensysteme (BIN, HEX, OCT, DEZ) umrechnen
[C#] Nummernformate beim Parsen fix festlegen
[C#] Create Directory
[C#] Summe 1..n berechnen
[C#] Fibonacci-Folge berechnen
[C#] n-te Fibonaccizahl rekursiv berechnen
[C#] Summe 1²...n² berechnen.
[C#] Summe 1³..n³ berechnen.
[C#] größten gemeinsamen Teiler berechnen.
[VB.NET] Multiplikation von übergroßen Zahlen
[C#] Dreiecksberechnung
[VB.NET] PI nach der Bailey-Borwein-Plouffe-Formel berechnen
[VB.NET] Quadratische Gleichung mit der PQ Formel lösen
[VB.NET] Basisrechenfunktionen für einen Kreis
[C++] Exponents
[C#] Quersummenberechnung
[C#] Geodaten in sexagesimal Format umrechnen
[VB.NET] Größten gemeinsamen Teiler berechnen
[VB.NET] Quadratwurzel ohne Sqrt() Funktion ziehen
[C#] Addiere alle ganzen Zahlen von x bis y
[C++] Caesar
[C#] "echte" Teiler Summe berechnen
[C#] Prüfung auf narzisstische Zahlen
[C#] CellMatrix
[C#] Maschinengenauigkeit
[C#] Flächenberechnungen am Kreis,Quadrat,Parallelogramm,Trapez
[C#] Bruch-Klasse
[VB.NET] einfacher rekursiver Mathe Parser
[VB.NET] Primfaktorzerlegung
[VB.NET] Größter gemeinsamer Teiler
[VB.NET] Modulare Exponentation
[VB.NET] Fibonacci-Folge iterativ erzeugen
[VB.NET] Werte zweier Variablen tauschen
[VB.NET] Ganzzahlige Wurzel
[VB.NET] Binäre Exponentation
[VB.NET] Größter gemeinsamer Teiler (2)
[VB.NET] Binomialkoeffizient
[VB.NET] Kleinster natürlicher Teiler > 1
[VB.NET] Dezimalzahl in Zahl der Basis b < 37 konvertieren

schlecht sehr gut
1 2 3 4 5 6 7 8 9 10
Nur angemeldete User können Snippets bewerten.