46 lines
833 B
Go
46 lines
833 B
Go
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
|
|
}
|