suchen
HeimJavajavaLernprogrammSo implementieren Sie die Erscheinungssequenz des Go Java-Algorithmus

Erscheinungssequenz

Geben Sie bei einer positiven Ganzzahl n das n-te Element der Erscheinungssequenz aus.

„Erscheinungssequenz“ ist eine Folge von ganzen Zahlen, beginnend mit der Nummer 1, und jedes Element in der Sequenz ist eine Beschreibung des vorherigen Elements.

Sie können es sich als eine Folge numerischer Zeichenfolgen vorstellen, die durch eine rekursive Formel definiert sind:

countAndSay(1) = „1“

countAndSay(n) ist eine Beschreibung von countAndSay(n-1), was dann ist in eine andere numerische Zeichenfolge konvertiert.

Die ersten fünf Elemente sind wie folgt:

  • 1, 1 –— Das erste Element ist die Nummer 1

  • 2, 11 –– das ist „a 1“, aufgezeichnet als „11“

  • 3, 21 – Beschreiben Sie den vorherigen Artikel, diese Zahl ist 11, das ist „zwei 1“, aufgezeichnet als „21“

  • 4, 1211 – beschrieben Das vorherige Element, die Nummer ist 21, was „a 2 + a 1“ ist, aufgezeichnet als „1211“

  • 5, 111221 – Beschreiben Sie das vorherige Element, die Nummer ist 1211, was „a 1 + a“ ist 2 + Zwei 1“, aufgezeichnet als „111221“

Methode 1: Traversal-Generierung (Java)

Die sogenannte „Erscheinungssequenz“ zählt eigentlich nur die Anzahl aufeinanderfolgender identischer Zeichen in einer Zeichenfolge.

Die durch die in der Frage angegebene rekursive Formel definierte numerische Zeichenfolgenfolge lautet wie folgt:

countAndSay(1) = „1“;

countAndSay(n) ist eine Beschreibung von countAndSay(n-1) und dann in eine andere numerische Zeichenfolge umgewandelt.

Wir definieren die Zeichenfolge S_{i} zur Darstellung von countAndSay(i). Wenn wir S_{n} benötigen, müssen wir zuerst S_{n-1} finden und es dann gemäß der oben beschriebenen Methode generieren ist, von links nach rechts die maximale Anzahl aufeinanderfolgender identischer Zeichen in der Zeichenfolge S_{n-1} zu scannen, dann die statistische Anzahl von Zeichen in eine numerische Zeichenfolge umzuwandeln und die entsprechenden Zeichen zu verbinden.

class Solution {
    public String countAndSay(int n) {
        String str = "1";
        for (int i = 2; i <= n; ++i) {
            StringBuilder sb = new StringBuilder();
            int start = 0;
            int pos = 0;
            while (pos < str.length()) {
                while (pos < str.length() && str.charAt(pos) == str.charAt(start)) {
                    pos++;
                }
                sb.append(Integer.toString(pos - start)).append(str.charAt(start));
                start = pos;
            }
            str = sb.toString();
        }
        return str;
    }
}

N ist eine gegebene positive ganze Zahl, M ist die maximale Länge in der generierten Zeichenfolge

Zeitkomplexität: O(N * M)

Raumkomplexität: O(M)

Methode 2: Rekursion (Go)

Die spezifische Methodenanalyse wurde oben beschrieben

Da die jedes Mal erhaltenen Daten aus dem vorherigen Ergebnis abgeleitet werden, können wir davon ausgehen, dass wir das letzte Ergebnis erhalten haben, und dann mit der Berechnung fortfahren. Dies verwendet Rekursion.

func countAndSay(n int) string {
    if n == 1 {
        return "1"
    }
    s := countAndSay(n - 1)
    i, res := 0, ""
    length := len(s)
    for j := 0; j < length; j++ {
        if s[j] != s[i] {
            res += strconv.Itoa(j-i) + string(s[i])
            i = j
        }
    }
    res += strconv.Itoa(length-i) + string(s[i])
    return res
}

N ist eine gegebene positive ganze Zahl, M ist die maximale Länge in der generierten Zeichenfolge

Zeitkomplexität: O(N*M)

Raumkomplexität: O(M)

Das obige ist der detaillierte Inhalt vonSo implementieren Sie die Erscheinungssequenz des Go Java-Algorithmus. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme
Dieser Artikel ist reproduziert unter:亿速云. Bei Verstößen wenden Sie sich bitte an admin@php.cn löschen

Heiße KI -Werkzeuge

Undresser.AI Undress

Undresser.AI Undress

KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover

AI Clothes Remover

Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool

Undress AI Tool

Ausziehbilder kostenlos

Clothoff.io

Clothoff.io

KI-Kleiderentferner

AI Hentai Generator

AI Hentai Generator

Erstellen Sie kostenlos Ai Hentai.

Heißer Artikel

R.E.P.O. Energiekristalle erklärten und was sie tun (gelber Kristall)
1 Monate vorBy尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Beste grafische Einstellungen
1 Monate vorBy尊渡假赌尊渡假赌尊渡假赌
Will R.E.P.O. Crossplay haben?
1 Monate vorBy尊渡假赌尊渡假赌尊渡假赌

Heiße Werkzeuge

Senden Sie Studio 13.0.1

Senden Sie Studio 13.0.1

Leistungsstarke integrierte PHP-Entwicklungsumgebung

WebStorm-Mac-Version

WebStorm-Mac-Version

Nützliche JavaScript-Entwicklungstools

SublimeText3 Mac-Version

SublimeText3 Mac-Version

Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

DVWA

DVWA

Damn Vulnerable Web App (DVWA) ist eine PHP/MySQL-Webanwendung, die sehr anfällig ist. Seine Hauptziele bestehen darin, Sicherheitsexperten dabei zu helfen, ihre Fähigkeiten und Tools in einem rechtlichen Umfeld zu testen, Webentwicklern dabei zu helfen, den Prozess der Sicherung von Webanwendungen besser zu verstehen, und Lehrern/Schülern dabei zu helfen, in einer Unterrichtsumgebung Webanwendungen zu lehren/lernen Sicherheit. Das Ziel von DVWA besteht darin, einige der häufigsten Web-Schwachstellen über eine einfache und unkomplizierte Benutzeroberfläche mit unterschiedlichen Schwierigkeitsgraden zu üben. Bitte beachten Sie, dass diese Software

Dreamweaver Mac

Dreamweaver Mac

Visuelle Webentwicklungstools