无重复字符的最长子串php,LeetCode - 无重复字符的最长子串 - Golang
题目:给定一个字符串,请你找出其中不含有重复字符的 最长子串的长度。
示例 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相关推荐
- 【LeetCode】重复元素相关题目
[LeetCode]重复元素相关题目 文章目录 [LeetCode]重复元素相关题目 存在重复元素★ 存在重复元素 II★ 存在重复元素 III★★ 重复 N 次的元素★ 寻找重复数★★ 存在重复元素 ...
- LeetCode 1156. 单字符重复子串的最大长度
文章目录 1. 题目 2. 解题 1. 题目 如果字符串中的所有字符都相同,那么这个字符串是单字符重复的字符串. 给你一个字符串 text,你只能交换其中两个字符一次或者什么都不做,然后得到一些单字符 ...
- c++基本数据类型基本类型: 整型: 短整型: short int 整型: int 长整型:long int 字符型:char(分为有符号和无符号,默认有符号) 浮点型:
基本类型: 整型: 短整型: short int 整型: int 长整型:long int 字符型:char(分为有符号和无符号,默认有符号) 浮点型:单精度型:float 双精度型:double 长 ...
- 最长有效括号子串长度 c语言,LeetCode: Longest Valid Parentheses (求最长有效匹配括号子串的长度)...
题目描述: Given a string containing just the characters'(' and')', find the length of the longest valid ...
- LeetCode 5. Longest Palindromic Substring 最长回文子串 Python 四种解法(Manacher 动态规划)
Longest Palindromic Substring 最长回文子串 学习笔记 1. Brute method 第一种方法:直接循环求解,o(n2)o(n^2) class Solution:de ...
- java练习: 编程列出一个字符串的全字符组合情况,原始字符串中没有重复字符,例如:
import java.util.ArrayList; import java.util.Scanner;/*** 7. 编程列出一个字符串的全字符组合情况,原始字符串中没有重复字符,例如:* 原始字 ...
- MFC中CString类字符串与长整型、浮点型、字符数组char数据之间的相互转换
一.长整型数据与CString类字符串相互转换 1.将长整型数据转换为CString字符串类 CString str; long ld; str.Format(_T("%ld"), ...
- mysql中的字符是多长_mysql中的varchar到底能存多长的字符
这个问题真的不简单. 我本地的数据库是mysql5.5 先看一下建表语句: CREATE TABLE `shop` ( `id` int(11) NOT NULL AUTO_INCREMENT COM ...
- ①编写一个程序,从键盘接收一个字符串,然后按照字符顺序从小到大进行排序,并删除重复的字符。②集合A、B的差集③对分行输入的若干字符串按字典序(由小到大)进行排序并输出。
文章目录 ①编写一个程序,从键盘接收一个字符串,然后按照字符顺序从小到大进行排序,并删除重复的字符 ②集合A.B的差集 ③对分行输入的若干字符串按字典序(由小到大)进行排序并输出. ①编写一个程序,从 ...
最新文章
- 这个GAN没见过猪,却能把狗变成猪
- CALayer-层的属性
- 各种操作系统ping时的TTL值
- 京瓷2010复印a4内容不全_京瓷2010复印机,纸卡定影的故障
- 华为云生态2020年政策FAQ(一)
- zabbix企业应用:通过SNMP和iDRAC监控DELL服务器硬件
- python安装mysqldb模块,如何使用pip安装Python MySQLdb模块?
- 【转】Struts2 验证问题:验证失败一次后就连续验证失败
- python字符串的删除操作_学习快人一步|python中常见的27个字符串操作
- 解决Nvivo自动编码问题,nvivo自动编码语言包
- margin padding是以什么为参照物
- ios 裁剪框大小_ios 图片裁剪修改尺寸的方法总结
- 微搭低代码小程序模板体验
- 【Coding】Latex添加表格注释footnote
- vue.js实现带表情评论功能前后端实现(仿B站评论)
- 极路由无线打印机服务器,极路由Hiwifi最多可连接有几台设备
- docker制作镜像的两种方法
- 开发中你不得不知的一些英文缩写(专业术语)
- Tcl异常处理命令之try、throw
- AI Earth 地球科学云平台——用数据感知地球世界(含福利)
热门文章
- 空值用前值填充_用Excel进行数据处理
- mysql错误码1709_MySQL5.6出现ERROR 1709 (HY000): Index column size too large问题的解决方法...
- android iphone对比度,对比度对比:显示器优势明显_苹果 MacBook Pro_液晶显示器评测-中关村在线...
- 如何实现RTMP推送Android Camera2数据
- CSS 让数字滑动显示
- vue-cli搭建和“Cannot find module npm-cli.js” 、“operation not permitted” 、 deprecated coffee-script等错误
- sudo mysql压缩备份解压操作_高效管理文件之压缩及解压缩 .bz2 文件
- dubbo:reference、dubbo:service和@Service、@Reference使用情况
- Java核心类库篇4——集合
- 电子游戏跟计算机有什么关联,电脑和电子游戏对小学生的影响