package main

import (
	"fmt"
	"sort"
	"strings"
)

func IsPalindrome(s sort.Interface) bool {
	for i, j := 0, s.Len()-1; i < j; i, j = i+1, j-1 {
		if s.Less(i, j) || s.Less(j, i) {
			return false
		}
	}
	return true
}

func StrToSlice(str string) []string {
	return strings.Split(str, "")
}

func IntToSlice(num int) []int {
	var s []int
	for num > 0 {
		s = append(s, num%10)
		num /= 10
	}
	return s
}

func main() {
	var str = "abcdcba"
	// 将字符串转为[]string
	s := StrToSlice(str)
	fmt.Println(str, ":", IsPalindrome(sort.StringSlice(s))) // abcdcba : true

	var num = 123321
	// 将数字转为[]int
	nums := IntToSlice(num)
	fmt.Println(num, ":", IsPalindrome(sort.IntSlice(nums))) // 123321 : true

	num = 123456
	nums = IntToSlice(num)
	fmt.Println(num, ":", IsPalindrome(sort.IntSlice(nums))) // 123456 : false
}
