当前位置: 首页 > 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;也增加了对果实的二次伤害…...

用STM32CubeMX和HAL库驱动MG90S舵机:从PWM原理到代码实现的保姆级教程

用STM32CubeMX和HAL库驱动MG90S舵机&#xff1a;从PWM原理到代码实现的保姆级教程 第一次接触舵机控制时&#xff0c;我被那个小小的MG90S迷住了——它居然能精确地转动到指定角度&#xff01;但当我真正开始用STM32控制它时&#xff0c;才发现PWM参数配置的坑比想象中多得多。…...

从文献检索到论文写作:Perplexity与Zotero构建AI-native科研流水线(实测单篇综述效率提升3.8倍)

更多请点击&#xff1a; https://intelliparadigm.com 第一章&#xff1a;从文献检索到论文写作&#xff1a;Perplexity与Zotero构建AI-native科研流水线&#xff08;实测单篇综述效率提升3.8倍&#xff09; 在AI-native科研范式下&#xff0c;传统文献管理与写作流程正被重构…...

联邦学习与RAG融合:构建隐私保护的跨机构智能检索系统

1. 项目概述与核心价值最近在折腾一个跨机构文档智能检索的原型&#xff0c;核心需求是&#xff1a;在不共享原始数据的前提下&#xff0c;让多个参与方&#xff08;比如几家医院、几个研究实验室&#xff09;能够联合起来&#xff0c;构建一个强大的、统一的文档知识库&#x…...

基于Vue 3与UnoCSS构建轻量级个人导航页:从零部署到高级定制

1. 项目概述&#xff1a;一个轻量级、可定制的个人导航页 最近在折腾自己的浏览器主页&#xff0c;厌倦了那些臃肿、广告满天飞的默认页面&#xff0c;也受够了每次都要在书签栏里翻找常用链接。作为一个喜欢把一切工具都“私有化”和“个性化”的开发者&#xff0c;我决定自己…...

科研工作流构建指南:从文献管理到论文写作的全流程工具链实践

1. 项目概述与核心价值 如果你是一名在读的硕士、博士研究生&#xff0c;或者刚刚踏入科研院所、企业研发部门的新人研究员&#xff0c;那么“如何高效地开展研究”这个问题&#xff0c;大概率会持续困扰你很长一段时间。从浩如烟海的文献中精准定位方向&#xff0c;到设计严谨…...

基于大语言模型与RAG的AI小说生成:从技术原理到工程实践

1. 项目概述&#xff1a;当AI开始“阅读”与“创作”最近在内容创作和小说爱好者圈子里&#xff0c;一个名为“auto-novel”的项目引起了我的注意。简单来说&#xff0c;这是一个利用人工智能技术&#xff0c;实现从“阅读”现有小说到“模仿创作”新内容的自动化工具。它的核心…...

氛围编程实战:用AI工具栈快速构建可部署应用

1. 项目概述&#xff1a;什么是“氛围编程”&#xff1f;如果你对“氛围编程”这个词感到陌生&#xff0c;或者觉得它听起来有点玄乎&#xff0c;那太正常了。我第一次听到时&#xff0c;也以为又是哪个硅谷弄潮儿发明的新潮黑话。但当我真正开始实践&#xff0c;并在几个月内从…...

macOS桌面歌词终极解决方案:LyricsX 2.0完整指南

macOS桌面歌词终极解决方案&#xff1a;LyricsX 2.0完整指南 【免费下载链接】Lyrics Swift-based iTunes plug-in to display lyrics on the desktop. 项目地址: https://gitcode.com/gh_mirrors/lyr/Lyrics 你是否曾经在听音乐时&#xff0c;想要跟着歌词一起唱却发现…...

期末课程论文不用卷!虎贲等考 AI:真文献 + 规范稿,轻松高效拿高分

一到期末、结课、学分冲刺阶段&#xff0c;课程论文就成了大学生最集中的压力点。选题不会定、框架搭不起来、文献找不到、内容写得太空、格式一塌糊涂、查重还容易超标…… 随便一项都能让原本简单的作业变得耗时又费力。 很多同学用通用 AI 凑字数&#xff0c;结果文献假、逻…...

【独家首发】Sora 2正式版未公开能力清单:原生支持3D空间锚点+时间轴语义编辑+版权水印嵌入(附OpenAI内部文档节选)

更多请点击&#xff1a; https://intelliparadigm.com 第一章&#xff1a;Sora 2正式版核心能力全景概览 多模态时序理解与生成一体化 Sora 2正式版突破性地将文本、图像、音频及物理运动参数统一编码至共享时空潜空间&#xff0c;支持长达120秒、1080p分辨率的连贯视频生成。…...