Exercícios de Go
Palindrome Check in Go
Does the text read the same in both directions? Ignore spaces, punctuation and case.
O que você vai aprender
- Filtering letters
- Lower case
- Comparing from both ends
level
l0
e1
v2
e3
l4
The same forwards and backwards
A palindrome reads the same in both directions, such as level. A good check ignores spaces, punctuation and the difference between upper and lower case.
The first loop keeps only letters and digits in lower case. The second compares the first character with the last, the second with the second to last, and so on, and stops at the first difference. %q prints the text with quotes.
Pontos-chave
- Keep only letters and digits.
- Compare in lower case.
- Stop at the first difference.
Exemplo executável de Go
main.go
package main
import (
"fmt"
"strings"
"unicode"
)
func isPalindrome(text string) bool {
letters := []rune{}
for _, r := range strings.ToLower(text) {
if unicode.IsLetter(r) || unicode.IsDigit(r) {
letters = append(letters, r)
}
}
for i, j := 0, len(letters)-1; i < j; i, j = i+1, j-1 {
if letters[i] != letters[j] {
return false
}
}
return true
}
func main() {
for _, text := range []string{"level", "A man, a plan, a canal: Panama", "Go"} {
fmt.Printf("%q -> %t\n", text, isPalindrome(text))
}
}
"level" -> true
"A man, a plan, a canal: Panama" -> true
"Go" -> falsePratique
Abra o exemplo no compilador online, mude um valor ou adicione uma linha e tente prever a saída antes de executar. Depois quebre o código de propósito e leia a mensagem do compilador.
Terminou esta lição?
Marque como aprendida para acompanhar seu progresso.
Seu progresso está salvo neste navegador Entre para mantê-lo em todos os dispositivos.
Pratique com um desafio
Use o conteúdo desta lição para resolver um problema real. Cada desafio roda no navegador, com testes instantâneos e uma revisão por IA.
- String Palíndroma Verifique se o texto é lido da mesma forma de frente para trás e de trás para frente. Fácil
- Número Palíndromo Verifique se um número é lido da mesma forma de trás para frente. Fácil