当前位置: 首页 > news >正文

Go语言刷题常用数据结构和算法

数据结构

字符串 string

  1. 访问字符串中的值

    • 通过下标访问
     s1 := "hello world"first := s[0]
    
    • 通过切片访问
    s2 := []byte(s1)
    first := s2[0]
    
    • 通过for-range循环访问
    for i, v := range s1 {fmt.Println(i, v)
    }
    
  2. 查询字符是否属于特定字符集

    // 判断字符串中是否包含a、b、c中的任意一个字符strings.ContainsAny(s1, "abc")// 判断字符串中是否包含abc子串strings.Contains(s1, "abc")// 判断字符串中是否包含a字符strings.ContainsRune(s1, 'a')
  1. 比较两个字符串
    • ==
    if s1 == s2 {fmt.Println("s1 == s2")
    }
    
    • strings.Compare, 1大于,0相等,-1小于
    if strings.Compare(s1, s2) == 0 {fmt.Println("s1 == s2")
    }
    
    • strings.EqualFold, 忽略大小写
    if strings.EqualFold(s1, s2) {fmt.Println("s1 == s2")
    }
    
  2. 字符串拼接
    • 加号
    s3 := s1 + s2
    
    • strings.Join
    s3 := strings.Join([]string{s1, s2}, "")
    
    • 高效拼接字符串
      var buffer bytes.Buffer
      buffer.WriteString(s1)
      buffer.WriteString(s2)
      s3 := buffer.String()
      
      或者
      var builder strings.Builder
      buffer.WriteString(s1)
      buffer.WriteString(s2)
      s3 := buffer.String()
      

slice模拟stack

  1. 创建栈
    stack := make([]int, 0)
    
  2. 入栈
    stack = append(stack, 1)
    
  3. 出栈
    if len(stack) > 0 {stack = stack[:len(stack)-1]
    }
    
  4. 判断栈是否为空
    if len(stack) == 0 {fmt.Println("stack is empty")
    }
    

slice模拟Queue

  1. 创建队列
    queue := make([]int, 0)
    
  2. 入队
    queue = append(queue, 1)
    
  3. 出队
    if len(queue) > 0 {queue = queue[1:]
    }
    
  4. 判断队列是否为空
    if len(queue) == 0 {fmt.Println("queue is empty")
    }
    

slice模拟Set

  1. 创建集合
    set := make(map[byte]struct{})
    
  2. 添加元素
    set['a'] = struct{}{}
    
  3. 删除元素
    delete(set, 'a')
    
  4. 判断元素是否存在
    if _, ok := set['a']; ok {fmt.Println("a is in set")
    }
    
http://www.lryc.cn/news/36634.html

相关文章:

  • 深入vue2.x源码系列:手写代码来模拟Vue2.x的响应式数据实现
  • Linux线程控制
  • 【LeetCode】剑指 Offer(20)
  • FutureTask中的outcome字段是如何保证可见性的?
  • 直播回顾 | 聚焦科技自立自强,Bonree ONE 助力国产办公自动化平稳替代
  • 深入理解Linux进程
  • Vue3之组件间的双向绑定
  • Java语法基础(一)
  • 优思学院|零质量控制是什么概念?
  • 2023-03-09 CMU15445-Query Execution
  • vuedraggable的使用
  • 双馈风力发电机-900V直流混合储能并网系统MATLAB仿真
  • leader选举过程
  • 建造者模式
  • IO与NIO区别
  • 无监督循环一致生成式对抗网络:PAN-Sharpening
  • ArrayList源码分析(JDK17)
  • 数字IC/FPGA面试笔试准备(自用待填坑)
  • 基于多任务融合的圣女果采摘识别算法研究
  • 又一个开源第一!飞桨联合百舸,Stable Diffusion推理速度遥遥领先
  • 数据链路层及交换机工作原理
  • VSCode 开发配置,一文搞定(持续更新中...)
  • 全网最详细的(CentOS7)MySQL安装
  • 基于LSTM的文本情感分析(Keras版)
  • 2023年全国最新机动车签字授权人精选真题及答案17
  • PowerShell远程代码执行漏洞(CVE-2022-41076)分析与复现
  • Mybatis中的一级缓存和二级缓存
  • 【Java】SpringBoot中实现异步编程
  • ASCII 文件与 TIFF 文件互转(Python 实现)(2023/03/09)
  • 思科模拟器 | 交换机与路由器的配置汇总【收藏备用】