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常规使用相关推荐

  1. Go语言学习之map

    Go语言学习之map 1.map的基本介绍 map是 key-value数据结构,又称为字段或者关联数组,类似JAVA的集合 在编程中经常使用到 2.map的声明 1.语法: var map 变量名 ...

  2. go语言api源码中文版_Go语言学习——sync.map源码剖析

    1.简介 最近看了下Sync包,详读了sync.map源码,感觉源码实现还是比较巧妙的,有不少可以学习的地方:在讲源码前,先看下sync.map的"历史",从网上搜资料,sync. ...

  3. 【Go语言学习】——Map

    Map 参考博客 Map在Go中提供映射关系的基于key-value的数据结构,,实际上内部使用的hash表实现的引用类型,必须初始化才能使用.判断map中的值时注意先判断错误,再执行操作.凡是返回有 ...

  4. Go语言学习笔记-数组、切片、map

    Go语言学习笔记-数组.切片.map 数组:同一数据类型元素的集合.是值类型,长度固定无法修改 声明格式:var 数组名字 [元素数量] 数据类型 var arr [3] int //声明定义了一个长 ...

  5. Rust太难?那是你没看到这套Rust语言学习万字指南!

    摘要:从开发环境.语法.属性.内存管理和Unicode等五部分,为你带来一份详细的Rust语言学习的精华总结内容. 一.Rust开发环境指南 1.1 Rust代码执行 根据编译原理知识,编译器不是直接 ...

  6. Python语言学习:python编程之pip命令集合、python调式、头部代码、代码运行等常见概念详细攻略(解决问题为导向)

    Python语言学习:python编程之pip命令集合.python调式.头部代码.代码运行等常见概念详细攻略(解决问题为导向) 目录 一.pip命令集合 1.pip常规命令 1.1  pip下载se ...

  7. go语言学习(基本数据类型)

    值类型: int/uint :根据系统确定是32还是64位.此外还有int8/uint8.int16/uint16.int32/uint32.int64/uint64 byte:字节型,相当于uint ...

  8. UCSB微软提出VIOLET,用Masked Visual-token Modeling进行端到端的视频语言学习!性能SOTA...

    关注公众号,发现CV技术之美 ▊ 写在前面 视频语言(VidL)建模的一个巨大挑战在于,从图像/视频理解模型提取的固定视频表示与下游VidL数据之间的脱节 .最近的研究试图通过端到端的训练来解决这个问 ...

  9. go语言学习初探(二)基础语法

    变量声明 var v1 int var v2 string var v3 [10]int var v4 []int var v5 struct {f int } var v6 *int var v7 ...

  10. go字符串转byte_go语言学习-基本数据类型

    整型 整型分为以下两个大类: 按长度分为:int8.int16.int32.int64 对应的无符号整型:uint8.uint16.uint32.uint64 其中,uint8就是我们熟知的byte型 ...

最新文章

  1. 积跬步,聚小流------ps有用小技巧,改变png图标颜色
  2. 领课网络在线教育系统开源项目
  3. Java float浮点数精度丢失问题
  4. Python3字符串填充和对齐代码示例
  5. matplotlib 雷达图2
  6. win7 32位 安装opencv-python后,运行时提示 from .cv2 import *: DLL load failed: 找不到指定的模块 的解决办法...
  7. 得到选择框句柄 怎么操作_知道借名买房有风险,只能选择借名买房该怎么操作?...
  8. C#委托和事件实现观察者模式
  9. 手机展示海报PSD模板、适用众多设计!
  10. php 环境优化,Nginx与PHP-fpm环境在大流量下的优化配置
  11. sql sum求和 值小于不显示_mysql中sum求和等类似方法关于null值的处理
  12. tail -f 命令卡住
  13. 最新简库软件库工具箱综合iApp安卓源码
  14. win+linux双系统实现efi共存(即通过linux启动界面切换系统)
  15. 零基础做油管搬运二创项目的正确方式,短视频小白玩家套利的可能
  16. 网络协议分析(第二版)期末复习资料一
  17. 数据中台技术汇 | CDP,线下零售顾客运营中台
  18. 这种文件别打开,大小不足1KB,却可以让你电脑瘫痪
  19. 时分秒针旋转角度换算
  20. nginx: [emerg] getpwnam(“nobody”) failed

热门文章

  1. html5设置文字不能复制,网页文字不能复制?巧解网页文字不能复制
  2. Selenium3自动化测试——6.键盘操作
  3. Selenium3自动化测试——2. python编写简单自测代码
  4. php 判断是否是单词,php – 检查字符串是否包含任何单词
  5. c++设置单元格填充色_更改数据后单元格自动填充颜色,从此以后再也不用核对数据了...
  6. Mac没有winnt格式_8款优秀软件,让你使用mac更舒适
  7. jquery改变html元素的样式,给input标签赋值,onclick中文传参问题等
  8. nginxmysql负载均衡,神操作!
  9. 【响应式Web前端设计】:link、:hover、:active和:visited的区别
  10. 【Ubuntu入门到精通系列讲解】Linux 终端命令格式