Bài tập 1: Viết một hàm để kiểm tra một chuỗi Palindrome (chuỗi đối xứng)


  • Trùm cuối

    Đề bài

    Đề bài này thường rất hay xuất hiện trong các câu phỏng vấn xin việc nên mình đưa nó vào bài tập căn bản. Chi tiết như sau:

    Cho một danh sách các chuỗi đầu vào như sau:

    chuoi1 := "xxxaaa"
    chuoi2 := "xxaaxx"
    chuoi3 := "6969"
    chuoi4 := "aaaaaa"
    chuoi5 := "xaxaxax"
    chuoi6 := "xyzzyx"
    

    Hãy viết một hàm để kiểm tra 6 chuỗi trên có phải là chuỗi đối xứng hay không (viết chuỗi đó từ trái qua phải hay từ phải qua trái đều không thay đổi, ví dụ "abccba") và xuất kết quả ra terminal.

    Gợi ý

    • Bài này dễ nên mình không gợi ý 😁


  • @admin trời trời. Đợi bài tập của bác lâu lắm rồiiii



  • Còn cách nào check dãy chuỗi đó mà đưa vào vòng lặp không bác? Mình chơi kiểu ghép tên chuỗi + với i như bên autoit mình k đc hehe

    package main
    
    import (
    	"fmt"
    	"strings"
    )
    
    var (
    	chuoi1 = "xxxaaa"
    	chuoi2 = "xxaaxx"
    	chuoi3 = "6969"
    	chuoi4 = "aaaaaa"
    	chuoi5 = "xaxaxax"
    	chuoi6 = "xyzzyx"
    )
    
    func doixung(text string) string {
    	var textB string
    	textA := strings.Split(text, "")
    	for i := int(len(textA) - 1); i >= 0; i-- {
    		textB = textB + textA[i]
    	}
    	if textB == text {
    		return textB
    	} else {
    		return ""
    	}
    }
    func main() {
    
    	fmt.Println(doixung(chuoi1))
    	fmt.Println(doixung(chuoi2))
    	fmt.Println(doixung(chuoi3))
    	fmt.Println(doixung(chuoi4))
    	fmt.Println(doixung(chuoi5))
    	fmt.Println(doixung(chuoi6))
    }
    
    

  • Trùm cuối

    @bambu_vn bài làm okie rùi, nếu muốn dùng slice thì có thể sửa lại như sau 😁

    package main
    
    import (
    	"fmt"
    	"strings"
    )
    
    var stringSlice []string = []string{
    	"xxxaaa",
    	"xxaaxx",
    	"6969",
    	"aaaaaa",
    	"xaxaxax",
    	"xyzzyx",
    }
    
    func doixung(text string) string {
    	var textB string
    	textA := strings.Split(text, "")
    	for i := int(len(textA) - 1); i >= 0; i-- {
    		textB = textB + textA[i]
    	}
    	if textB == text {
    		return textB
    	} else {
    		return ""
    	}
    }
    func main() {
    
    	for _, v := range stringSlice {
    		fmt.Println(doixung(v))
    	}
    }
    

    Test: https://play.golang.org/p/6p8cfaVa4tK



  • @admin không. Ý mình là k đưa vào slice. Vẫn dùng biến như đề bài. Rồi làm cách nào đưa vào for cho nó check toàn bộ đó
    À cho mình hỏi thêm cái vụ dấu _ là như thế nào vậy
    Giải ngố hộ mình dòng for _ luôn nha.


  • Trùm cuối

    @bambu_vn

    for _, v := range stringSlice 
    

    _, v là index và giá trị của slice, dấu _ là để bỏ qua index vì mình ko dùng tới.

    Eval một string expression thì ko có trong builtin của Golang mà phải sử dụng package bên ngoài, mình khuyên là dùng slice thay thế cho đỡ phức tạp 😀



Có thể bạn cũng quan tâm

.
DMCA.com Protection Status