基于Go语言的最长不含重复字符的子字符串的两种解法-JZ48

devtools/2024/10/19 9:38:26/

描述

请从字符串中找出一个最长的不包含重复字符的子字符串,计算该最长子字符串的长度。

数据范围:

 s.length≤40000 s.length≤40000

示例1

输入:

"abcabcbb"

返回值:

3

说明:

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

示例2

输入:

"bbbbb"

返回值:

1

说明:

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

示例3

输入:

"pwwkew"

返回值:

3

说明:

因为无重复字符的最长子串是 "wke",所以其长度为 3。
请注意,你的答案必须是子串的长度,"pwke" 是一个子序列,不是子串。    

一、 滑动窗口

Go">package main/*** 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可** 滑动窗口* @param s string字符串* @return int整型*/
func lengthOfLongestSubstring(s string) int {// write code hereif len(s) == 0 {return 0}charIndex := make(map[byte]int)maxLen, start := 0, 0for i := range s {char := s[i]if idx, found := charIndex[char]; found && idx >= start {// 当前字符如果出现过,并且它的上一次出现位置在当前起点之后start = idx + 1}// 更新字符的最新位置charIndex[char] = i// 更新最大长度if i-start+1 > maxLen {maxLen = i - start + 1}}return maxLen
}

 二、动态规划

Go">package main/*** 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可*** @param s string字符串* @return int整型*/
func lengthOfLongestSubstring(s string) int {// write code hereif len(s) == 0 {return 0}// dp[i] 表示以 s[i] 结尾的最长无重复子串长度dp := make([]int, len(s))// lastIndex 记录字符上一次出现的位置lastIndex := make(map[byte]int)dp[0] = 1           // 第一个字符子串长度为1lastIndex[s[0]] = 0 // 记录第一个字符的位置maxLen := 1         // 记录全局最长子串长度for i := 1; i < len(s); i++ {lastPos, found := lastIndex[s[i]]if found && lastPos >= i-dp[i-1] {// 如果字符在 dp[i-1] 子串内出现过dp[i] = i - lastPos} else {// 如果没有出现过或者不在 dp[i-1] 子串内dp[i] = dp[i-1] + 1}// 更新字符位置lastIndex[s[i]] = i// 更新最大长度if dp[i] > maxLen {maxLen = dp[i]}}return maxLen
}


http://www.ppmy.cn/devtools/125093.html

相关文章

手写mybatis之细化XML语句构建器,完善静态SQL解析

前言 1&#xff1a;在流程上&#xff0c;通过 DefaultSqlSession#selectOne 方法调用执行器&#xff0c;并通过预处理语句处理器 PreparedStatementHandler 执行参数设置和结果查询。 2&#xff1a;那么这个流程中我们所处理的参数信息&#xff0c;也就是每个 SQL 执行时&#…

2024系统架构师---试题四论网络安全体系架构设计及应用

试题四论网络安全体系架构设计及应用 建立信息系统安全体系的目的&#xff0c;就是将普遍性安全原理与信息系统的实际相结合&#xff0c;形成满足信息系统安全需求的安全体系结构&#xff0c;网络安全体系是信息系统体系的核心。OSI(Open System Interconnection)是由国际化标准…

Docker 环境下多节点服务器监控实战:从 Prometheus 到 Grafana 的完整部署指南

Docker 环境下多节点服务器监控实战&#xff1a;从 Prometheus 到 Grafana 的完整部署指南 文章目录 Docker 环境下多节点服务器监控实战&#xff1a;从 Prometheus 到 Grafana 的完整部署指南一 多节点部署1 节点一2 节点二3 节点三 二 监控节点部署三 配置 prometheus.yml四 …

大数据毕业设计选题推荐-招聘信息数据分析系统-Python数据可视化-Hive-Hadoop-Spark

✨作者主页&#xff1a;IT研究室✨ 个人简介&#xff1a;曾从事计算机专业培训教学&#xff0c;擅长Java、Python、微信小程序、Golang、安卓Android等项目实战。接项目定制开发、代码讲解、答辩教学、文档编写、降重等。 ☑文末获取源码☑ 精彩专栏推荐⬇⬇⬇ Java项目 Python…

数据处理方式,线程与进程,多任务,Spark与MR的区别

目录 数据处理的方式有哪些 单机数据处理 集群数据处理 分布式计算框架 MapReduce ApplicationMaster Spark分布式计算类别 进程与线程的区别 进程是计算时分配资源的最小单位 线程是执行计算任务的最小任务 多进程的执行效率没有多线程的执行效率高 多任务 Spark和M…

Facebook直播障碍的多重原因及解决方案

在社交媒体迅猛发展的今天&#xff0c;直播已经成为用户与观众互动、分享内容的重要方式。然而&#xff0c;作为全球最大的社交平台之一&#xff0c;Facebook在直播过程中常常遇到各种障碍&#xff0c;使得用户无法顺利进行直播。本文将深入探讨Facebook无法直播的原因&#xf…

OceanBase + DolphinScheduler,搭建分布式大数据调度平台的实践

本文整理自白鲸开源联合创始人&#xff0c;Apache DolphinScheduler PMC Chair&#xff0c;Apache Foundation Member 代立冬的演讲。主要介绍了DolphinScheduler及其架构、DolphinScheduler与OceanBase 的联合大数据方案。 DolphinScheduler是什么&#xff1f; Apache Dolphi…

YOLO11 实例分割模型做行人分割

实例分割是检测和隔离图像中单个对象的关键技术,YOLO11 是执行这项任务的最佳模型之一。在本文中,你将学习如何使用 YOLO11 分割模型有效地在图像中分割人物。我们将涵盖从设置 Python 环境和安装必要的库,到下载测试图像和可视化分割结果的所有内容。通过本教程的学习,你将…