Yang ini agak biasa. Bunyinya sukar, tetapi tidak begitu teruk apabila anda memikirkannya dengan teliti.
Tulis fungsi golang untuk memeriksa sama ada rentetan ialah palindrom.
Palindrom ialah jujukan aksara yang sama walaupun diterbalikkan, contohnya:
"aba" ialah palindrom
"abb bukan
"ab a" dianggap palindrom oleh kebanyakan orang, jadi kami mengabaikan ruang kosong.
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 }
Penyelesaian ini berfungsi sama seperti yang anda akan dapati untuk C atau Java apabila mencari dalam talian. Kami pada asasnya menggunakan dwi penuding untuk melintasi dari awal dan akhir mencari watak yang tidak sepadan. Apabila ketidakpadanan ditemui, kita boleh mengisytiharkan rentetan itu bukan palindrom.
Bolehkah kita menjadikannya lebih baik?
Adakah terdapat cara yang lebih baik untuk memangkas ruang putih daripada menggunakan rentetan.GantiSemua? (ada tapi boleh jadi hodoh)
Bagaimana pula dengan kecekapan menukar kepada []rune, adakah cara yang lebih baik?
Siarkan pendapat anda dalam ulasan.
Terima kasih!
Kod untuk siaran ini dan semua siaran dalam siri ini boleh didapati di sini
Atas ialah kandungan terperinci Palindrome menyemak rentetan. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!