go语言学习(1)map常规使用
kotlin其实学习已经有一段时间了,但是kotlin的博客并没有写完,但是go已经开始了,只能先把kotlin的博客滞后吧,等我对kotlin有了更深的了解之后会返回来把这部分博客补全的。
杂七杂八的事情就不说了
Map的操作
创建:make(map[string]int)
获取元素:m[key]
key不存在时,获得value类型的初始值
用value,ok:=m[key]来判断是否存在key
用delete删除一个key
Map的遍历
使用range遍历key,或者遍历key,value对
不保证遍历顺序,如需顺序,需要手动对key排序
使用len来获取元素个数
Map的key
map使用hash表,必须可以比较相等
除了slice,map,function的内建类型都可以作为key
Struct类型不包括上述字段,也可以作为key
使用:寻找最长不含有重复字符的子串
思路:首先,我们起码需要遍历一波字符串吧,这样一来就可以知道字符串里面到底有些什么,即都有哪些字母,这些字母各取一个就是最长的不重复字母的子串,剩下来的就是怎么知道每一个字母在最长子串中对应的位置呢
哦哦,这里还有个问题,我一直不太注意子串和子序列的区别,所以上面的想法是子序列的,下面才是子串的
对于每一个字母x,使用lastOccured[x]来记录他独一无二的满足要求的位置,当然可能最长子串不唯一
存在三种情况:
lastOccured[x]不存在,或者<start ->无需操作
lastOccured[x]>=start ->更新start
更新lastOccurred[x],更新maxLength
执行代码:
package mainimport "fmt"//这个思想大体是确保每一个局部都是不重复的,那么整体就是不重复的 func lengthOfNonRepeatingSubStr(s string) int {lastOccured := make(map[byte]int)start := 0maxLength := 0for i, ch := range []byte(s) {if lastI, ok := lastOccured[ch]; ok && lastI >= start {start = lastI + 1}if i-start+1 > maxLength {maxLength = i - start + 1}lastOccured[ch] = i}return maxLength }func main() {originStr:= "12233321"fmt.Println(lengthOfNonRepeatingSubStr(originStr)) }
注意,上面代码并不支持汉字
go语言学习(1)map常规使用相关推荐
- Go语言学习之map
Go语言学习之map 1.map的基本介绍 map是 key-value数据结构,又称为字段或者关联数组,类似JAVA的集合 在编程中经常使用到 2.map的声明 1.语法: var map 变量名 ...
- go语言api源码中文版_Go语言学习——sync.map源码剖析
1.简介 最近看了下Sync包,详读了sync.map源码,感觉源码实现还是比较巧妙的,有不少可以学习的地方:在讲源码前,先看下sync.map的"历史",从网上搜资料,sync. ...
- 【Go语言学习】——Map
Map 参考博客 Map在Go中提供映射关系的基于key-value的数据结构,,实际上内部使用的hash表实现的引用类型,必须初始化才能使用.判断map中的值时注意先判断错误,再执行操作.凡是返回有 ...
- Go语言学习笔记-数组、切片、map
Go语言学习笔记-数组.切片.map 数组:同一数据类型元素的集合.是值类型,长度固定无法修改 声明格式:var 数组名字 [元素数量] 数据类型 var arr [3] int //声明定义了一个长 ...
- Rust太难?那是你没看到这套Rust语言学习万字指南!
摘要:从开发环境.语法.属性.内存管理和Unicode等五部分,为你带来一份详细的Rust语言学习的精华总结内容. 一.Rust开发环境指南 1.1 Rust代码执行 根据编译原理知识,编译器不是直接 ...
- Python语言学习:python编程之pip命令集合、python调式、头部代码、代码运行等常见概念详细攻略(解决问题为导向)
Python语言学习:python编程之pip命令集合.python调式.头部代码.代码运行等常见概念详细攻略(解决问题为导向) 目录 一.pip命令集合 1.pip常规命令 1.1 pip下载se ...
- go语言学习(基本数据类型)
值类型: int/uint :根据系统确定是32还是64位.此外还有int8/uint8.int16/uint16.int32/uint32.int64/uint64 byte:字节型,相当于uint ...
- UCSB微软提出VIOLET,用Masked Visual-token Modeling进行端到端的视频语言学习!性能SOTA...
关注公众号,发现CV技术之美 ▊ 写在前面 视频语言(VidL)建模的一个巨大挑战在于,从图像/视频理解模型提取的固定视频表示与下游VidL数据之间的脱节 .最近的研究试图通过端到端的训练来解决这个问 ...
- go语言学习初探(二)基础语法
变量声明 var v1 int var v2 string var v3 [10]int var v4 []int var v5 struct {f int } var v6 *int var v7 ...
- go字符串转byte_go语言学习-基本数据类型
整型 整型分为以下两个大类: 按长度分为:int8.int16.int32.int64 对应的无符号整型:uint8.uint16.uint32.uint64 其中,uint8就是我们熟知的byte型 ...
最新文章
- 积跬步,聚小流------ps有用小技巧,改变png图标颜色
- 领课网络在线教育系统开源项目
- Java float浮点数精度丢失问题
- Python3字符串填充和对齐代码示例
- matplotlib 雷达图2
- win7 32位 安装opencv-python后,运行时提示 from .cv2 import *: DLL load failed: 找不到指定的模块 的解决办法...
- 得到选择框句柄 怎么操作_知道借名买房有风险,只能选择借名买房该怎么操作?...
- C#委托和事件实现观察者模式
- 手机展示海报PSD模板、适用众多设计!
- php 环境优化,Nginx与PHP-fpm环境在大流量下的优化配置
- sql sum求和 值小于不显示_mysql中sum求和等类似方法关于null值的处理
- tail -f 命令卡住
- 最新简库软件库工具箱综合iApp安卓源码
- win+linux双系统实现efi共存(即通过linux启动界面切换系统)
- 零基础做油管搬运二创项目的正确方式,短视频小白玩家套利的可能
- 网络协议分析(第二版)期末复习资料一
- 数据中台技术汇 | CDP,线下零售顾客运营中台
- 这种文件别打开,大小不足1KB,却可以让你电脑瘫痪
- 时分秒针旋转角度换算
- nginx: [emerg] getpwnam(“nobody”) failed
热门文章
- html5设置文字不能复制,网页文字不能复制?巧解网页文字不能复制
- Selenium3自动化测试——6.键盘操作
- Selenium3自动化测试——2. python编写简单自测代码
- php 判断是否是单词,php – 检查字符串是否包含任何单词
- c++设置单元格填充色_更改数据后单元格自动填充颜色,从此以后再也不用核对数据了...
- Mac没有winnt格式_8款优秀软件,让你使用mac更舒适
- jquery改变html元素的样式,给input标签赋值,onclick中文传参问题等
- nginxmysql负载均衡,神操作!
- 【响应式Web前端设计】:link、:hover、:active和:visited的区别
- 【Ubuntu入门到精通系列讲解】Linux 终端命令格式