当前位置: 首页 > 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")
    }
    

相关文章:

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

数据结构 字符串 string 访问字符串中的值 通过下标访问 s1 : "hello world"first : s[0]通过切片访问 s2 : []byte(s1) first : s2[0]通过for-range循环访问 for i, v : range s1 {fmt.Println(i, v) }查询字符是否属于特定字符集 // 判断字符串中是否包含a、b、…...

深入vue2.x源码系列:手写代码来模拟Vue2.x的响应式数据实现

前言 Vue响应式原理由以下三个部分组成: 数据劫持:Vue通过Object.defineProperty()方法对data中的每个属性进行拦截,当属性值发生变化时,会触发setter方法,通知依赖更新。发布-订阅模式:Vue使用发布-订阅…...

Linux线程控制

本篇我将学习如何使用多线程。要使用多线程,因为Linux没有给一般用户直接提供操作线程的接口,我们使用的接口,都是系统工程师封装打包成原生线程库中的。那么就需要用到原生线程库。因此,需要引入-lpthread,即连接原生…...

【LeetCode】剑指 Offer(20)

目录 题目:剑指 Offer 38. 字符串的排列 - 力扣(Leetcode) 题目的接口: 解题思路: 代码: 过啦!!! 写在最后: 题目:剑指 Offer 38. 字符串的…...

FutureTask中的outcome字段是如何保证可见性的?

最近在阅读FutureTask的源码是发现了一个问题那就是源码中封装结果的字段并没有使用volatile修饰&#xff0c;源码如下&#xff1a;public class FutureTask<V> implements RunnableFuture<V> {/*** 状态变化路径* Possible state transitions:* NEW -> COMPLET…...

直播回顾 | 聚焦科技自立自强,Bonree ONE 助力国产办公自动化平稳替代

3月5日&#xff0c;两会发布《政府工作报告》&#xff0c;强调科技政策要聚焦自立自强。 统计显示&#xff0c;2022年金融信创项目数同比增长300%&#xff0c;金融领域信创建设当前已进入发展爆发期&#xff0c;由国有大型银行逐渐向中小型银行、非银金融机构不断扩展。信创云…...

深入理解Linux进程

进程参数和环境变量的意义一般情况下&#xff0c;子进程的创建是为了解决某个问题。那么解决问题什么问题呢&#xff1f;这个就需要进程参数和环境变量来进行决定的。子进程解决问题需要父进程的“数据输入”(进程参数 & 环境变量)设计原则&#xff1a;3.1 子进程启动的时候…...

Vue3之组件间的双向绑定

何为组件间双向绑定 我们都知道当父组件改变了某个值后&#xff0c;如果这个值传给了子组件&#xff0c;那么子组件也会自动跟着改变&#xff0c;但是这是单向的&#xff0c;使用v-bind的方式&#xff0c;即子组件可以使用父组件的值&#xff0c;但是不能改变这个值。组件间的…...

Java语法基础(一)

目录 代码注释方法 编码规范 基本数据类型及取值范围 变量和常量的声明与赋值 变量 常量 标识符 基本数据类型的使用 整数类型的使用 浮点类型的使用 布尔类型的使用 字符类型的使用 代码注释方法 单行注释&#xff1a;使用“//”进行单行注释多行注释&#xff1a;使…...

优思学院|零质量控制是什么概念?

零质量控制&#xff08;Zero Quality Control&#xff09;是指一个理想的系统&#xff0c;可以生产没有任何缺陷的产品&#xff0c;因此不需要频繁的检查&#xff0c;从而节省时间和金钱。那些追求过程优化并致力于持续过程改进的组织将零质量控制&#xff08;Zero Quality Con…...

2023-03-09 CMU15445-Query Execution

摘要: CMU15445, Project #3 - Query Execution 参考: Project #3 - Query Execution | CMU 15-445/645 :: Intro to Database Systems (Fall 2022) https://github.com/cmu-db/bustub 要求: OVERVIEW At this point in the semester, you have implemented the internal co…...

vuedraggable的使用

Draggable为基于Sortable.js的vue组件&#xff0c;用以实现拖拽功能。 特性 支持触摸设备 支持拖拽和选择文本 支持智能滚动 支持不同列表之间的拖拽 不以jQuery为基础 和视图模型同步刷新 和vue2的国度动画兼容 支持撤销操作 当需要完全控制时&#xff0c;可以抛出所有变化 可…...

双馈风力发电机-900V直流混合储能并网系统MATLAB仿真

MATLAB2016b主体模型&#xff1a;双馈感应风机模块、采用真实风速数据。混合储能模块、逆变器模块、转子过电流保护模块、整流器控制模块、逆变器控制模块。直流母线电压&#xff1a;有功、无功输出&#xff08;此处忘记乘负一信号输出&#xff09;&#xff0c;所以是负的。蓄电…...

leader选举过程

启动electionTimer&#xff0c;进行leader选举。 一段时间没有leader和follower通信&#xff0c;就会超时&#xff0c;开始选举leader过程。有个超时时间&#xff0c;如果到了这个时间&#xff0c;就会触发一个回调函数。具体如下: private void handleElectionTimeout() {boo…...

建造者模式

介绍 Java中的建造者模式是一种创建型设计模式,它的主要目的是为了通过一系列简单的步骤构建复杂的对象,允许创建复杂对象的不同表示形式,同时隐藏构造细节.它能够逐步构建对象,即先创建基本对象,然后逐步添加更多属性或部件,直到最终构建出完整的对象. 该模式的主要思想是将…...

IO与NIO区别

一、概念 NIO即New IO,这个库是在JDK1.4中才引入的。NIO和IO有相同的作用和目的,但实现方式不同,NIO主要用到的是块,所以NIO的效率要比IO高很多。在Java API中提供了两套NIO,一套是针对标准输入输出NIO,另一套就是网络编程NIO。 二、NIO和IO的主要区别 下表总结了Java I…...

无监督循环一致生成式对抗网络:PAN-Sharpening

Unsupervised Cycle-Consistent Generative Adversarial Networks for Pan Sharpening &#xff08;基于无监督循环一致生成式对抗网络的全色锐化&#xff09; 基于深度学习的全色锐化近年来受到了广泛的关注。现有方法大多属于监督学习框架&#xff0c;即对多光谱&#xff0…...

ArrayList源码分析(JDK17)

ArrayList类简介类层次结构构造无参构造有参构造添加元素add&#xff1a;添加/插入一个元素addAll:添加集合中的元素扩容mount与迭代器其他常见方法不常见方法不常见方法的源码和小介绍常见方法的源码和小介绍积累面试题ArrayList是什么&#xff1f;可以用来干嘛&#xff1f;Ar…...

数字IC/FPGA面试笔试准备(自用待填坑)

文章目录 前言常见的IC问题数字电路基础问题Verilog & SV跨时钟域信号处理类综合与时序分析类低功耗方法STA(静态时序分析)RTL设计(包含手撕代码)总线问题AXIAPBAHB体系结构的问题RISCV的问题一些笔试选择题前言 这是实验室师兄面试过程中整理的面试和笔试题目,目前只有题…...

基于多任务融合的圣女果采摘识别算法研究

基于多任务融合的圣女果采摘识别算法研究 1、简介 本文主要解决圣女果生产销售环节中&#xff0c;现有的流程是采摘成熟的圣女果&#xff0c;再对采摘下的果实进行单独的品质分级&#xff0c;不仅费时费力&#xff0c;而且多增加一个环节&#xff0c;也增加了对果实的二次伤害…...

bilibili-parse极简工具:三步搞定B站视频解析的高效方案

bilibili-parse极简工具&#xff1a;三步搞定B站视频解析的高效方案 【免费下载链接】bilibili-parse bilibili Video API 项目地址: https://gitcode.com/gh_mirrors/bi/bilibili-parse 您是否曾因想保存B站精彩视频却被复杂的技术门槛劝退&#xff1f;是否在面对AV号/…...

墨语灵犀Python入门辅助:从零开始学编程的智能导师

墨语灵犀Python入门辅助&#xff1a;从零开始学编程的智能导师 想学Python&#xff0c;但一打开教程就被满屏的术语和代码吓退了&#xff1f;自己写代码&#xff0c;遇到报错看不懂&#xff0c;搜了半天也找不到答案&#xff0c;是不是很挫败&#xff1f;别担心&#xff0c;这…...

别再死记硬背ATT报文了!用Wireshark抓包实战,带你搞懂BLE通信里Handle和UUID的映射过程

实战拆解BLE通信&#xff1a;用Wireshark透视Handle与UUID的动态映射 当你第一次看到BLE设备通信时&#xff0c;那些十六进制数字在屏幕上闪烁&#xff0c;就像在看天书。Handle、UUID、ATT报文——这些概念在文档里写得清清楚楚&#xff0c;但真正抓包分析时&#xff0c;却总感…...

Xftp访问服务器文件夹报错?可能是你Xshell打开的方式不对(附正确操作截图)

Xftp访问服务器文件夹报错&#xff1f;可能是你Xshell打开的方式不对&#xff08;附正确操作截图&#xff09; 当你使用Xftp连接服务器时&#xff0c;突然遇到"无法显示远程文件夹"的报错&#xff0c;这往往不是Xftp本身的问题&#xff0c;而是权限和会话上下文在作…...

像素时装锻造坊实战:用AI快速生成电商服装像素海报,效果惊艳

像素时装锻造坊实战&#xff1a;用AI快速生成电商服装像素海报&#xff0c;效果惊艳 1. 电商视觉设计的效率革命 每天清晨&#xff0c;电商设计师小张都要面对同样的挑战&#xff1a;为30款新上架的皮衣制作主图海报。传统流程需要拍摄实物、修图调色、设计排版&#xff0c;平…...

别再只当开关用了!聊聊MOS管里那个‘多余’的体二极管,到底能帮你省多少事

解锁MOS管体二极管的隐藏技能&#xff1a;从电路保护到能量回收的实战指南 在电子设计领域&#xff0c;MOS管常被视为完美的电子开关——快速、高效且易于控制。但许多工程师可能没有意识到&#xff0c;MOS管内部那个看似"多余"的体二极管&#xff0c;实际上是一个被…...

AOP_青春版_VS_Pro版

背景&#xff1a;在javaweb和ssm中学习了面向切面编程的两种方式&#xff08;两种切点表达式不同&#xff09;&#xff0c;在苍穹外卖中&#xff0c;对于设置更新时间&#xff0c;创建时间&#xff0c;更新人&#xff0c;创建者为避免重复编码&#xff0c;将Update&Insert中…...

AI上色有多强?cv_unet_image-colorization修复老照片效果对比展示

AI上色有多强&#xff1f;cv_unet_image-colorization修复老照片效果对比展示 1. 引言&#xff1a;老照片焕发新生的魔法 翻开泛黄的相册&#xff0c;那些黑白照片承载着无数珍贵记忆&#xff0c;却因年代久远失去了原本的色彩。传统的手工上色不仅耗时耗力&#xff0c;还需要…...

《计算机网络》再学习

1.TCP/IP与OSI模型1&#xff09;TCP/IP模型应用层&#xff1a;为程序提供网络服务。协议&#xff1a;HTTP&#xff0c;DNS与FTP等传输层&#xff1a;提供端到端的通信服务&#xff0c;确保数据的可靠传输。协议&#xff1a;TCP与UDP网络层&#xff1a;负责数据包的路由与转发。…...

PHP开发者必看:如何在本地环境快速搭建gRPC和Protobuf开发环境

PHP开发者必看&#xff1a;如何在本地环境快速搭建gRPC和Protobuf开发环境 作为一名长期与PHP打交道的开发者&#xff0c;我深刻理解在微服务架构盛行的当下&#xff0c;掌握gRPC和Protobuf技术栈的重要性。记得第一次尝试在本地搭建环境时&#xff0c;光是版本兼容问题就耗费了…...