反转
func reverse(s []int) {
for i, j := 0, len(s)-1; i < j; i, j = i+1, j-1 {
s[i], s[j] = s[j], s[i]
}
}
func main() {
a := [...]int{0, 1, 2, 3, 4, 5}
reverse(a[:])
fmt.Println(a)
}
数组反转
func reverse(s *[7]int) {
for i, j := 0, len(*s)-1; i < j; i, j = i+1, j-1 {
(*s)[i], (*s)[j] = (*s)[j], (*s)[i]
}
}
func main() {
arr := [7]int{0, 1, 2, 3, 4, 5, 6}
reverse(&arr)
fmt.Println(arr)
}
编写一个函数,实现一次遍历就可以完成元素旋转
func rotate(s []int, position int) []int {
r := s[position:]
for i := position - 1; i >= 0; i-- {
r = append(r, s[i])
}
return r
}
func main() {
s := []int{0, 1, 2, 3, 4, 5}
a := rotate(s, 4)
fmt.Println(a)
}
编写一个函数,去除[]string 中相邻且重复的字符串元素
func removeDuplicateElement(s []string) []string {
result := make([]string, 0, len(s))
tmp := map[string]struct{}{}
for _, i := range s {
_, ok := tmp[i]
if !ok {
tmp[i] = struct{}{}
result = append(result, i)
}
}
return result
}
func main() {
a := []string{"huo", "zhao", "zhang", "liang", "li", "zhao"}
b := removeDuplicateElement(a)
fmt.Println(b)
}
顺序打印散列值中的元素
func main() {
ages := map[string]int{
"alice": 31,
"bob": 21,
"nike": 27,
}
var names []string
for name := range ages {
names = append(names, name)
}
sort.Strings(names)
for _, name := range names {
fmt.Printf("%s\t%d\n", name, ages[name])
}
}