Das kommt ziemlich häufig vor. Klingt schwierig, ist aber nicht wirklich schlimm, wenn man es einmal durchdenkt.
Schreiben Sie eine Golang-Funktion, um zu überprüfen, ob eine Zeichenfolge ein Palindrom ist.
Ein Palindrom ist eine Folge von Zeichen, die auch umgekehrt gleich sind, zum Beispiel:
„aba“ ist ein Palindrom
"abb ist nicht
"ab a" wird von den meisten als Palindrom angesehen, daher ignorieren wir Leerzeichen.
func PalindromeCheck(str string) bool { trimmedStr := strings.ReplaceAll(str, " ", "") len := len(trimmedStr) chars := []rune(trimmedStr) for i := 0; i < len/2; i++ { if chars[i] != chars[len-i-1] { return false } } return true }
Diese Lösung ist funktional dieselbe, die Sie bei der Online-Suche für C oder Java finden. Wir verwenden im Wesentlichen Doppelzeiger, um vom Anfang bis zum Ende zu durchlaufen und nach einem nicht übereinstimmenden Zeichen zu suchen. Wenn eine Nichtübereinstimmung festgestellt wird, können wir erklären, dass die Zeichenfolge kein Palindrom ist.
Können wir es besser machen?
Gibt es eine bessere Möglichkeit, Leerzeichen zu entfernen, als strings.ReplaceAll zu verwenden? (Das gibt es, aber es kann hässlich werden)
Wie sieht es mit der Effizienz der Umwandlung in eine []Rune aus? Gibt es einen besseren Weg?
Posten Sie Ihre Gedanken in den Kommentaren.
Danke!
Den Code für diesen Beitrag und alle Beiträge dieser Reihe finden Sie hier
Das obige ist der detaillierte Inhalt vonPalindrom überprüft eine Zeichenfolge. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!