Unterstrings eines Strings finden

8

Für eine Zeichenfolge der Länge n lautet die Formel zur Berechnung aller Teilzeichenfolgen: n (n + 1) / 2 Kann mir jemand helfen, diese Formel intuitiv zu verstehen?

Wikipedia sagt: "Die Anzahl der Teilzeichenfolgen einer Zeichenfolge der Länge, in der Symbole nur einmal vorkommen, ist die Anzahl der Möglichkeiten, zwei verschiedene Stellen zwischen Symbolen zum Starten / Beenden der Teilzeichenfolge"

auszuwählen     
Chander Shivdasani 14.09.2012, 05:23
quelle

6 Antworten

26

Um dies zu verstehen, beachten Sie, dass jeder Teilstring zwei Parameter benötigt: Startindex und Endindex.

Zum Beispiel: string str="Hallo Welt"; // Länge == 11

Beginnen wir damit, dass wir zur Zeit nur einen Teilzeichenkettenstring nehmen: H, e, l, l, o,, W, o, r, l, d. Dann mit 2 Zeichen zur Zeit: Er, el, ll, lo, o, W, Wo, oder, rl, ld. Dann nehmen Sie 3 Zeichen: Hel, etc ..

Also ist die Gesamtzahl der Teilstrings 11 + 10 + 9 + .. + 1 und im Allgemeinen for i from 1 to n , wir haben n - i + 1 Teilstrings. Durch die Zusammenfassung:

Sigma (n + 1 - i) von i = 1 bis n, ergibt n * (n + 1) - n * (n + 1) / 2 was n * (n + 1) / 2

ist     
user586399 14.09.2012, 05:32
quelle
4

Eine Teilzeichenkette wird durch die Position bestimmt, an der sie beginnt und an der sie in der ursprünglichen Zeichenkette endet. Für jede Teilkette haben wir diese zwei Endpunkte. Umgekehrt gibt es für zwei beliebige Zeichen in der Zeichenfolge genau eine Teilzeichenfolge, die an diesen Punkten beginnt und endet.

Somit ist die Anzahl aller Teilstrings die Anzahl aller Paare von (nicht notwendigen unterschiedlichen) Zeichen.

Es gibt n*(n-1)/2 Paare von unterschiedlichen Zeichen. Sie müssen auch die nicht eindeutigen Paare hinzufügen, die n sind.

Also ist die Gesamtanzahl n * (n-1) / 2 + n = n * (n+1) / 2 .

    
Petar Ivanov 14.09.2012 05:30
quelle
1

Ich bin nicht gut in Mathe, aber was sind substrings einer Zeichenkette und was sind die Möglichkeiten, substrings einer Zeichenkette zu bekommen, werde ich versuchen, Sie zu erklären.

lasst uns ein Beispiel nehmen: "MOBILE" Dies ist eine Zeichenkette aus 6 Zeichen, jetzt gemäß Ihrer Formel n (n + 1) / 2, was zu 6 (6 + 1) / 2 = 21

führt

Also ist die Teilzeichenfolge eine beliebige Zeichenfolge, die den Startindex und den Endindex zwischen der gesamten Zeichenfolge hat.

in der Zeichenfolge "MOBILE" folgt die Teilzeichenfolge, die wir haben können:

Schritt 1: "M" Startindex "M" und Endindex "M" dies ist eine Möglichkeit

Schritt 2: "MO" Startindex "M" und Endindex "O" dies ist zweite Möglichkeit

.

.

Schritt 5: "MOBIL" Startindex "M" und Endindex "L" ist die fünfte Möglichkeit

.

.

Schritt 8: "OB" Startindex "O" und Endindex "B" dies ist acht Möglichkeiten

.

.

Schritt 21: "MOBILE" Startindex "E" und Endindex "E" ist die einundzwanzigste Möglichkeit

Dies sind die Möglichkeiten, einen Teilstring innerhalb eines Strings zu haben und im Endindex des Teilstrings darf nicht kleiner als der Startindex sein.

    
FosterZ 14.09.2012 05:36
quelle
1

Nun, es ist die Summe aller Teilstrings der Länge 1 (genau n), plus alle Teilstrings der Länge 2 (n-1), plus alle Teilstrings der Länge n (was eine richtige Zeichenkette ist). Dann haben Sie n + n-1 + n-2 ... + 1 = (n * (n + 1)) / 2

Die Summe kann mit natürlicher Induktion berechnet werden und es ist auch bekannt wegen Gauss, der diese Summe löste, als er in der Schule war.

    
Luixv 14.09.2012 05:30
quelle
0

Angenommen, Sie möchten die Teilzeichenfolge von "abc" herausfinden, das wäre {"a", "ab", "abc", "b", "bc", "c"} wir würden es mit dem folgenden Code berechnen

%Vor%

Wenn Sie diesen Code betrachten, können Sie leicht erkennen, dass die Schleifen als

ausgeführt werden
  

3 Mal im ersten Lauf,   2 Mal im zweiten Lauf, 1 Mal im dritten Lauf

Da jedes Mal ein Teilstring zurückgegeben wird, ist gleich der Summe von n das ist = n (n + 1) / 2

    
Aditya 18.06.2016 14:56
quelle
-1

n * (n + 1) / 2 ist die Summe der Zahlen von 1 bis n.

Wenn n = 4, 4 * (4 + 1) / 2 = 10.

Hoffe, das hilft.

    
Arun B Chandrasekaran 14.09.2012 06:00
quelle

Tags und Links