【字符串】-Lc3-无重复字符的最长子串(indexOf(String str, int fromIndex))

写在前面

  最近想复习一下数据结构与算法相关的内容,找一些题来做一做。如有更好思路,欢迎指正。


目录

  • 写在前面
  • 一、场景描述
  • 二、具体步骤
    • 1.环境说明
    • 2.代码
  • 写在后面


一、场景描述

  给定一个字符串,请你找出其中不含有重复字符的 最长子串 (子序列 )的长度。

示例1:
输入: "abcabcbb"
输出: 3
解释: 因为无重复字符的最长子串是 "abc",所以其长度为 3。示例2:
输入: "bbbbb"
输出: 1
解释: 因为无重复字符的最长子串是 "b",所以其长度为 1。示例3:
输入: "pwwkew"
输出: 3
解释: 因为无重复字符的最长子串是 "wke",所以其长度为 3。提示:请注意,你的答案必须是 子串 的长度,"pwke" 是一个子序列,不是子串。

二、具体步骤

1.环境说明

名称说明
IntelliJ IDEA2019.2

2.代码

以下为Java版本实现:

public class Lc3_lengthOfLongestSubstring {public static void main(String[] args) {String s = "abcabcbb";
//        String s = "bbbbb";
//        String s = "pwwkew";System.out.println(lengthOfLongestSubstring(s));}/**** 思路:* 返回值是int,定义默认值max设置为0** 将字符串转转化为字符数组,借助于StringBuilder.indexOf(String str, int fromIndex)判断是否有重复字符* 如果有重复的字符,则从重复字符的下一位开始计算。不管有没有,都需要添加到builder中* 每循环一次,比较 builder.length() - fromIndex(重复时用于记录下一位) 的值与 max的大小** 说明:builder.length() - fromIndex就是本次循环,不重复的字符串的长度*** 定义 max,fromIndex,builder* for循环字符串s** int index = builder.indexOf(ch + "", fromIndex) != -1* index != -1, fromIndex = index + 1;* builder.append(ch)** int len = builder.length() - fromIndex;* 判断 len > max, max = len** 最后返回 max** @param s* @return*/private static int lengthOfLongestSubstring(String s) {int max = 0, fromIndex = 0;StringBuilder builder = new StringBuilder(s.length());for (char ch : s.toCharArray()) {// 找到重复位置,切记从开始位置开始int index = builder.indexOf(ch + "", fromIndex);if (index != -1) {fromIndex = index + 1;}builder.append(ch);int len = builder.length() - fromIndex;if (len > max) {max = len;}}return max;}
}

写在后面

  如果本文内容对您有价值或者有启发的话,欢迎点赞、关注、评论和转发。您的反馈和陪伴将促进我们共同进步和成长。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/708690.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

input css padding

这样控件会跑出外套控件在HTML JSP里面是经常出现的。但有些外国adobe的as控件不存在这种情况,这是因为内层控件定义的时候不能超出外层控件的范围。 修改下:去掉原来css padding,然后加上宽度和高度

C语言 常量

常量是固定值,在程序执行期间不会改变。这些固定的值,又叫做字面量。 常量可以是任何的基本数据类型,比如整数常量、浮点常量、字符常量,或字符串字面值,也有枚举常量。 常量就像是常规的变量,只不过常量的…

EAP-TLS实验之Ubuntu20.04环境搭建配置(FreeRADIUS3.0)(四)

该篇主要介绍了利用配置ca.cnf、server.cnf、client.cnf在certs路径下生成证书文件(非执行bootstrap脚本,网上也有很多直接通过openssl命令方式生成的文章),主要参考(概括中心思想)官方手册,以及…

s-table和columns初始化不完整,造成table文件的filter报错

问题 顺藤摸瓜找errorHandler.js文件 发现文件并没有什么问题 顺藤摸瓜找index.vue文件 首先找到报错的filter,发现与columnsSetting相关 找到columnsSetting发现等于columns 返回自己使用S-table组件的地方,发现columns初始化时仅初始化为ref()未表明…

统信软件:统一操作系统 UOS 代言人

这是ren_dong的第32篇原创 1、Deepin Deepin:最受欢迎的民用国产操作系统 2008 年,Deepin 操作系统最早版本正式发布,是由 深之度创始人刘闻欢组织团队研发的基于 Debian 的本地化 Linux 操作系统 2011 年,武汉深之度科技有限公司成立,开始产…

Facebook的虚拟社交愿景:元宇宙时代的新起点

在当今数字化时代,社交媒体已经成为人们生活中不可或缺的一部分。而随着科技的不断进步和社会的发展,元宇宙已经成为了人们关注的热点话题之一。作为社交媒体的领军企业之一,Facebook也在积极探索虚拟社交的未来,将其视为元宇宙时…

LeetCode 2886.改变数据类型

DataFrame students ------------------- | Column Name | Type | ------------------- | student_id | int | | name | object | | age | int | | grade | float | ------------------- 编写一个解决方案来纠正以下错误: grade 列被存储为浮点数,将它转…

6U VPX全国产飞腾D2000/8核+复旦微FPGA信息处理主板

产品特性 产品功能 飞腾计算平台,国产化率100% VPX-MPU6503是一款基于飞腾D2000/8核信息处理主板,采用由飞腾D2000处理器飞腾X100桥片的高性能计算机模块,双通道16G贴装内存,板载128G 固态SSD;预留固态盘扩展接口&…

cppzmq入门

cppzmq是一个基于ZeroMQ的开源C 库,用于构建分布式和并发应用程序。它提供了与ZeroMQ消息队列进行通信的简单接口。本文将介绍cppzmq的基本概念、常用模式以及示例代码。 基本概念 ZeroMQ:ZeroMQ是一个轻量级的消息队列库,它允许应用程序通过…

LaTeX笔记

文章目录 基本操作文本加粗 图片插入引用 表格插入引用 公式插入引用 参考文献超链接跳转问题修改hyperref包属性,去掉方框 latex入门指南:插入图片、表格、公式方法一览_latex插入表格-CSDN博客 基本操作 文本加粗 先选中,再 ctrlb 图片…

试题 算法训练 礼物

资源限制 内存限制:256.0MB C/C时间限制:1.0s Java时间限制:3.0s Python时间限制:5.0s 问题描述 JiaoShou在爱琳大陆的旅行完毕,即将回家,为了纪念这次旅行,他决定带回一些礼物给好朋友。…

蓝桥杯第十二届电子类单片机组程序设计

目录 前言 蓝桥杯大赛历届真题_蓝桥杯 - 蓝桥云课(点击查看) 单片机资源数据包_2023(点击下载) 一、第十二届比赛原题 1.比赛题目 2.题目解读 蓝桥杯第十四届电子类单片机组程序设计_蓝桥杯单片机哪一届最难-CSDN博客 二、…

金三银四面试必问:Redis真的是单线程吗?

文章目录 01 Redis中的多线程1)redis-server:2)jemalloc_bg_thd3)bio_xxx: 02 I/O多线程03 Redis中的多进程04 结论▼延伸阅读 由面试题“Redis是否为单线程”引发的思考 作者:李乐 来源:IT阅读…

Android Kotlin协程实战

你能听懂的Kotlin协程课,跟老司机学,不用自己瞎折腾 认识协程 协程难在哪儿? Ja v a中不曾出现的,新概念概念不清晰,我们看到的大都是不同语言对于协程的实现或者衍生Kotlin 基础不扎实多线程编程基础太薄弱 协程是什么? 协…

OpenAI最新发布的文生视频模型Sora到底强在哪?

文章目录 1.Sora到底强在哪?2. 不足3. 结尾 2024年2月16日,当大家沉浸在过年的喜庆氛围中,OpenAI发布首款文生成视频大模型 Sora ,其炸裂登场让人感到惊艳。 Sora官网介绍:https://openai.com/sora 说起文生视频工具…

SLA 是什么?如何实现 SLA 管理

随着业务的不断壮大,为了满足日益增长的客户需求,网络必须保持与这些需求同步。同时,为了提高最终用户的体验,运维人员/网络管理员在监控企业级网络时遇到了不少瓶颈,必须不断审查网络,以确保提供的服务质量…

【Python笔记-设计模式】备忘录模式

一、说明 备忘录模式是一种行为设计模式,允许在不暴露对象实现细节的情况下保存和恢复对象之前的状态。 (一) 解决问题 主要解决在不破坏封装性的前提下,捕获一个对象的内部状态,并在对象之外保存这个状态,以便在需要时恢复对象…

c#委托的三种实现方式

委托是实质一个类,主要目的是将方法当作参数进行传递。 委托是.NET编程的精髓之一,在日常编程中经常用到,在C#中实现委托主要有Func、Action、delegate三种方式,本节主要就这三种委托的用法通过实例展开讲解。 Func用法解析 【F…

log4j 基础使用入门教程

一、Log4j介绍 在项目中,不管是开发人员写代码还是测试人员写的测试代码一般都需要做一些日志来记录项目的行为,以便更好的跟踪项目中的一些交互和问题。 Log4j ( Logger For Java ) , Java 日志的记录包。 官方网站 。Log4j 是 Apache 的一个开源项目…

transformers模型预训练

模型预训练是指在深度学习领域中,先在一个大规模数据集上对模型进行初步训练,使模型能够学习到基本的特征表示和模式,然后再针对具体任务或特定数据集进行微调的过程。本次主要介绍掩码语言模型预训练以及因果语言模型预训练。 掩码语言模型预训练是自然语言处理领域中的一…