AzLearn

تمرين إعادة البناء

Palindrome Checker

أعد كتابة برنامج Go يفحص النصوص المتناظرة.

go ~16 دقيقة مبتدئ
أعد بناء الكود Rebuild

هذا هو الكود. اكتبه بنفسك.

الكود المرجعي
package main

import (
	"fmt"
	"strings"
	"unicode"
)

func normalizedRunes(text string) []rune {
	var runes []rune
	for _, r := range strings.ToLower(text) {
		if unicode.IsLetter(r) || unicode.IsDigit(r) {
			runes = append(runes, r)
		}
	}
	return runes
}

func isPalindrome(text string) bool {
	runes := normalizedRunes(text)
	for left, right := 0, len(runes)-1; left < right; left, right = left+1, right-1 {
		if runes[left] != runes[right] {
			return false
		}
	}
	return true
}

func main() {
	examples := []string{
		"level",
		"Never odd or even",
		"Go is practical",
	}

	for _, example := range examples {
		fmt.Printf("%q -> %t\n", example, isPalindrome(example))
	}
}
اكتب هنا