go 写题常用数据结构和函数

Fri Feb 14 2025

常用数据结构

字符串

高效拼接

var b bytes.Buffer b.WriteString("Hello ") b.WriteString("World") b1 := b.String() // 多个字符串拼接 var strs []string strings.Join(strs, "World")

查询是否属于特定字符串

// 判断是否包含元音 if strings.Contains("aeiouAEIOU", string(s[i])) { // ... }

字符串转换

strconv.Itoa(int) // int -> string strconv.Atoi(str) // string -> int

字符串分割

// 字符串分割 strings.Splie(str, str2) // 将str按str2作为分隔符进行分割,返回字符串切片
// 大小写切换 strings.ToLower(str) // string全部转为小写 strings.ToUppe(str) // str全部转为大写

Slice

添加数据

// 在尾部添加元素 slice = append(slice, 1)

模拟Stack

// 创建栈 stack := make([]int, 0) // push压入 stack = append(stack, 10) // pop弹出 v := stack[len(stack) - 1] stack = stack[:len(stack) - 1] // 检查栈空 len(stack) == 0

模拟单调栈

var ms = make([]int, 0, len(nums)) // 单调栈 for _, num := range nums { if f := sort.SearchInts(ms, num); f == len(ms) { ms = append(ms, num) } else { ms[f] = num } }

模拟Queue

// 创建队列 queue := make([]int, 0) // enqueue入队 queue = append(queue, 10) // dequeue出队 v := queue[0] queue = queue[1:] // 长度0为空 len(queue) == 0

Map

// 创建 m := make(map[keyType]ValueType) // 设置kv m["hello"] = 1 // 删除k delete(m,"hello")

常用函数

sort

// int排序 sort.Ints([]int{}) // 字符串排序 sort.Strings([]string{}) // 进行反转 sort.Reverse()

自定义比较器sort.Search,通过二分法,找到满足条件(即函数返回值为true)的最小的索引

index := sort.Search(n, func(i int) bool { // ... })

math

// int32 最大最小值 math.MaxInt32 math.MinInt32 // int64 最大最小值(int默认是int64) math.MaxInt64 math.MinInt64

copy

// 删除a[i],可以用 copy 将i+1到末尾的值覆盖到i,然后末尾-1 copy(a[i:], a[i+1:]) a = a[:len(a)-1]

Comments

There are no comments yet.