题目:给定一个字符串,请你找出其中不含有重复字符的 最长子串的长度。

示例 1:

输入: "abcabcbb"

输出: 3

解释: 因为无重复字符的最长子串是 `"abc",所以其`长度为 3。

示例 2:

输入: "bbbbb"

输出: 1

解释: 因为无重复字符的最长子串是 `"b"`,所以其长度为 1。

示例 3:

输入: "pwwkew"

输出: 3

解释: 因为无重复字符的最长子串是 `"wke"`,所以其长度为 3。

请注意,你的答案必须是 **子串** 的长度,`"pwke"` 是一个_子序列,_不是子串。

基于Golang的代码实现如下:

func lengthOfLongestSubstring(s string) int {

// 获取字符串长度

l := len(s)

// 单个字符直接返回

if l <= 1 {

return l

}

// historyMax记录历史保存的最大长度

// currentMax记录当次迭代下最大长度

historyMax, currentMax := 0, 0

// 定义最长无重复字符串的起点下标

start := 0

// 存储字符的最新位置

tmp := map[string]int{}

for i := 1; i <= l; i++ {

// 判断当前字符是否有记录

if v, ok := tmp[s[i-1:i]]; ok {

// 如若有记录,说明发现重复字符,记录当下的最长值

if currentMax > historyMax {

historyMax = currentMax

}

// 当次迭代后的最大长度重新计算为去掉重复字符之前的长度

// 如abca,新的无重复字符串为bca

currentMax = currentMax - v + start + 1

// 删掉重复字符之前所有字符的位置记录

for j := start; j < v; j++ {

delete(tmp, s[j:j+1])

}

// 更新无重复字符串的起点下标

start = v

} else {

// 没有找到重复字符则长度+1

currentMax++

}

// 永远记录当前字符的位置

tmp[s[i-1:i]] = i

}

// 返回最终的max长度

if currentMax > historyMax {

historyMax = currentMax

}

return historyMax

}

有疑问加站长微信联系(非本文作者)

无重复字符的最长子串php,LeetCode - 无重复字符的最长子串 - Golang相关推荐

  1. 【LeetCode】重复元素相关题目

    [LeetCode]重复元素相关题目 文章目录 [LeetCode]重复元素相关题目 存在重复元素★ 存在重复元素 II★ 存在重复元素 III★★ 重复 N 次的元素★ 寻找重复数★★ 存在重复元素 ...

  2. LeetCode 1156. 单字符重复子串的最大长度

    文章目录 1. 题目 2. 解题 1. 题目 如果字符串中的所有字符都相同,那么这个字符串是单字符重复的字符串. 给你一个字符串 text,你只能交换其中两个字符一次或者什么都不做,然后得到一些单字符 ...

  3. c++基本数据类型基本类型: 整型: 短整型: short int 整型: int 长整型:long int 字符型:char(分为有符号和无符号,默认有符号) 浮点型:

    基本类型: 整型: 短整型: short int 整型: int 长整型:long int 字符型:char(分为有符号和无符号,默认有符号) 浮点型:单精度型:float 双精度型:double 长 ...

  4. 最长有效括号子串长度 c语言,LeetCode: Longest Valid Parentheses (求最长有效匹配括号子串的长度)...

    题目描述: Given a string containing just the characters'(' and')', find the length of the longest valid ...

  5. LeetCode 5. Longest Palindromic Substring 最长回文子串 Python 四种解法(Manacher 动态规划)

    Longest Palindromic Substring 最长回文子串 学习笔记 1. Brute method 第一种方法:直接循环求解,o(n2)o(n^2) class Solution:de ...

  6. java练习: 编程列出一个字符串的全字符组合情况,原始字符串中没有重复字符,例如:

    import java.util.ArrayList; import java.util.Scanner;/*** 7. 编程列出一个字符串的全字符组合情况,原始字符串中没有重复字符,例如:* 原始字 ...

  7. MFC中CString类字符串与长整型、浮点型、字符数组char数据之间的相互转换

    一.长整型数据与CString类字符串相互转换 1.将长整型数据转换为CString字符串类 CString str; long ld; str.Format(_T("%ld"), ...

  8. mysql中的字符是多长_mysql中的varchar到底能存多长的字符

    这个问题真的不简单. 我本地的数据库是mysql5.5 先看一下建表语句: CREATE TABLE `shop` ( `id` int(11) NOT NULL AUTO_INCREMENT COM ...

  9. ①编写一个程序,从键盘接收一个字符串,然后按照字符顺序从小到大进行排序,并删除重复的字符。②集合A、B的差集③对分行输入的若干字符串按字典序(由小到大)进行排序并输出。

    文章目录 ①编写一个程序,从键盘接收一个字符串,然后按照字符顺序从小到大进行排序,并删除重复的字符 ②集合A.B的差集 ③对分行输入的若干字符串按字典序(由小到大)进行排序并输出. ①编写一个程序,从 ...

最新文章

  1. 这个GAN没见过猪,却能把狗变成猪
  2. CALayer-层的属性
  3. 各种操作系统ping时的TTL值
  4. 京瓷2010复印a4内容不全_京瓷2010复印机,纸卡定影的故障
  5. 华为云生态2020年政策FAQ(一)
  6. zabbix企业应用:通过SNMP和iDRAC监控DELL服务器硬件
  7. python安装mysqldb模块,如何使用pip安装Python MySQLdb模块?
  8. 【转】Struts2 验证问题:验证失败一次后就连续验证失败
  9. python字符串的删除操作_学习快人一步|python中常见的27个字符串操作
  10. 解决Nvivo自动编码问题,nvivo自动编码语言包
  11. margin padding是以什么为参照物
  12. ios 裁剪框大小_ios 图片裁剪修改尺寸的方法总结
  13. 微搭低代码小程序模板体验
  14. 【Coding】Latex添加表格注释footnote
  15. vue.js实现带表情评论功能前后端实现(仿B站评论)
  16. 极路由无线打印机服务器,极路由Hiwifi最多可连接有几台设备
  17. docker制作镜像的两种方法
  18. 开发中你不得不知的一些英文缩写(专业术语)
  19. Tcl异常处理命令之try、throw
  20. AI Earth 地球科学云平台——用数据感知地球世界(含福利)

热门文章

  1. 空值用前值填充_用Excel进行数据处理
  2. mysql错误码1709_MySQL5.6出现ERROR 1709 (HY000): Index column size too large问题的解决方法...
  3. android iphone对比度,对比度对比:显示器优势明显_苹果 MacBook Pro_液晶显示器评测-中关村在线...
  4. 如何实现RTMP推送Android Camera2数据
  5. CSS 让数字滑动显示
  6. vue-cli搭建和“Cannot find module npm-cli.js” 、“operation not permitted” 、 deprecated coffee-script等错误
  7. sudo mysql压缩备份解压操作_高效管理文件之压缩及解压缩 .bz2 文件
  8. dubbo:reference、dubbo:service和@Service、@Reference使用情况
  9. Java核心类库篇4——集合
  10. 电子游戏跟计算机有什么关联,电脑和电子游戏对小学生的影响