48_剑指offer_java_最长不含重复字符的子字符串

基于CANoe的车载以太网测试 以太网测试 CANoe 阅读详情

目录

题目描述

测试用例

题目考点

解题思路

自己解题


题目描述

请从字符串中找出一个最长的不包含重复字符的子字符串,计算该最长子字符串的长度。假设字符串只包含 'a'~'z' 的字符的,例如在字符串“arabcacfr”中,最长不含重复字符的子字符串为 “acfr”,长度为 4。

 

测试用例

  • 功能测试(包含多个字符的字符串;只要一个字符的字符串;所有都唯一的字符串;所有字符都相同的字符串)
  • 特殊输入测试(空字符串)

 

题目考点

  • 考察应聘者用动态规划分析问题的能力。
  • 考察应聘者对递归及时间效率的理解。

解题思路(见书上画图,更易理解)

定义函数f(i)表示以第i个字符结尾的不包含重复字符的子字符串的最长长度。它有以下几种情况:

1、第i个字符(x)之前没出现过,f(i) = f(i-1) + 1;

2、第i个字符之前出现过:

1)d<=f(i-1) , 即第i个字符出现在f(i-1)对应的最长子字符串之内,有f(i) = d,d为两个x之间的距离;

2)d>f(i-1) , 即第i个字符出现在f(i-1)对应的最长子字符串之前,有f(i) = f(i-1) + 1。

 

参考解题

package Sword;
/**
 * 最长不包含字符的子字符串
 * 动态规划
 * @author tyler
 *
 */
public class longestSubstringWithoutDuplication {
	
	public int getlongestSubstringWithoutDuplication(String s) {
		
	int curLength = 0; 
        int maxLength = 0; 
        
        // 26个字符上次出现在字符串位置的下标
        int[] positon = new int[26];
        
        for (int i = 0;  i < s.length(); ++i) {
			positon[i] = -1;
		}
        
        // 循环。动态更新最长无重复字符的子字符串的长度
        for (int i = 0; i < s.length(); ++i) {
			// 获取当前字符前一次出现的下标
        	int preIndex = positon[s.charAt(i) - 'a'];
			//当前字符(第i个字符)没出现过,或者出现在f(i-1)对应的最长子字符串之前, f(i) = f(i-1) + 1;
        	if (preIndex < 0 || i - preIndex > curLength ) {
				++curLength;
			}else {
				// 当前字符出现过,并且出现在f(i-1)对应的最长子字符串之内, f(i) = d;
				if (curLength > maxLength) {
					maxLength = curLength;
				}
				curLength = i - preIndex;
			}
        	
        	// 更新当前字符出现的下标
        	positon[s.charAt(i) - 'a'] = i;
		}
        
        //
        if (curLength > maxLength) {
        	maxLength = curLength;
		}
        
        return maxLength;
	}
	
}

 

Seurat 单细胞转录组测序数据分析教程(三)——python(scanpy) 文章参考至,做了一个更详细的解读。本教程探讨了 scanpy 的可视化可能性,分为三个部分:嵌入的散点图(例如 UMAP、t-SNE)使用已知标记基因鉴定簇差异表达基因的可视化在本教程中,我们将使用来自 10x 的数据集,其中包含来自PBMC的 68k 个细胞。Scanpy 在其分布中包括该数据集的简化样本,该数据集仅包含 700 个细胞和 765 个高度可变的基因。该数据集已经过预处理和 UMAP 计算。在本教程中,我们还将使用以下文献标记:B细胞:CD79A、MS4A1。 阅读详情

相关推荐

基于carsim与Simulink联合仿真的车辆换道轨迹规划与轨迹跟踪模型

PID_反步控制_滑膜控制三种四旋翼无人机轨迹跟踪控制算法仿真 附带对应的说明文档,提供建模过程与仿真结果文献(英文)➕PPT 描述:采用的同一种参考轨迹,都是三维仿真 三种控制方法: [1]PID控制、[2]反步控制、[3]滑膜控制(三个仿真模型) 每个仿真均应用了同一种轨迹路径,直接运行即可出三维图,可以实现四旋翼无人机轨迹的跟踪

2501_90804007的博客 1084

【Java】每日一题,最长不含重复的子字符串

请从字符串中找出一个最长的不包含重复字符的子字符串,计算该最长子字符串的长度。"abcabcbb"3因为无重复字符的最长子串是 “abc”,所以其长度为3。

weixin_53662229的博客 934

静止无功补偿SVG的基本控制原理

上图是自励单变量控制框图,基本控制方式为,采集计算得到负载无功电流和SVG输出的无功电流的差值,经过PI调节作为功率角δ和固定的调制深度λ和调制波,经过PWM调制形成开关信号驱动SVG的功率电路。该控制方式使保持调制深度λ(即SVG电压的幅度)不变,通过调整δ来调整直流电压和无功,跟踪输出无功功率,直流电压就会大幅度随动,无功相应速度较慢。SVG通常有他励方式和自励方式,他励方式需要提供外部的直流电源,自励方式通过电网输出有功功率至SVG建立SVG的直流电压。δ为Us和Uc之间的相角差。

weixin_42668920的博客 1991

无重复字符的最长子串 Java

无重复字符的最长子串(java解法)

zhanglei1147的博客 1919

Cadence Allegro新手避坑:从原理图到PCB,解决‘netrev.lst does not exist’的完整流程

本文详细介绍了Cadence Allegro从原理图设计到PCB导入网表的完整流程,特别针对新手常见的'netrev.lst does not exist'错误提供了系统解决方案。内容包括环境准备、原理图设计规范、网表生成与导入技巧,以及设计数据管理最佳实践,帮助工程师高效完成PCB设计任务。

weixin_42685438的博客 488

数据库常见面试题(附答案)

1.事务四大特性 原子性,要么执行,要么不执行 隔离性,所有操作全部执行完以前,其它会话不能看到过程 一致性,事务前后,数据总额一致 持久性,一旦事务提交,对数据的改变就是永久的 2.数据库隔离级别,每个级别会引发什么问题,mysql默认是哪个级别 脏读:事务B读取事务A还没有提交的数据 不可重复读:两次事务读的数据不一致 幻读:事务A修改了数据,事务B也修改了数据,这时在事务A看...

csdn问鼎 46万+

无重复字符的最长子串(Java 详解)

这个算法的关键在于通过滑动窗口的方式,动态地调整窗口的大小,以保持窗口内的字符都不重复,并且在遍历过程中不断更新最大子串的长度。这样可以在一次遍历中解决问题,而不需要额外的循环来检查所有可能的子串。时间复杂度为O(n),其中n是字符串的长度。解决这个问题的关键在于使用滑动窗口和哈希集来维护一个当前不含重复字符的子串。,请你找出其中不含有重复字符的。

weixin_48751586的博客 2104

使用Google Earth Engine下载JRC全球水体数据

通过Google Earth Engine平台和提供的源代码,研究人员和水资源管理者可以方便地获取和利用这一重要的水资源监测数据集,从而开展相关的研究和决策支持工作。要使用Google Earth Engine下载JRC全球水体数据,首先需要在Google Earth Engine平台上进行注册和登录。JRC全球水体数据是由欧洲联合研究中心开发的高分辨率全球水体分类数据集,覆盖了整个地球的陆地和水域。下载完成后,你可以使用各种遥感数据处理软件来打开和分析这些数据,以满足不同的研究和应用需求。

LrlDebug的博客 1158

力扣 3. 无重复字符的最长子串-java两种解法

力扣 3. 无重复字符的最长子串-java两种解法

算法部落 897

【VTK】VTK中的光标样式

本文分享VTK中的光标设置相关内容技术,希望对各位小伙伴有所帮助!

qq_40041064的博客 1931

x265开源编码器源码框架深度解析

x265开源编码器源码框架深度解析

世界那么大,我想去看看~【随心更新,看世界去了😄】 669

Java 实现无重复字符的最长字串

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

nalanqingcheng1314的博客 1083

诊断测试工具CANoe.DiVa从入门到精通系列——开门见山

### 工具主要用于测试ECU的诊断功能。关于自动化诊断测试可以分为如下内容: ### -> 1、根据诊断需求规范进行cdd文件的编辑(现阶段主要是诊断问卷调查表); ### -> 2、新建Diva工程,导入对应的诊断数据库文件生成测试用例; ### -> 3、新建CANoe工程,导入CANoe.DiVa生成的Diva工程; ### -> 4、根据测试报告进行错误处理。

Soly_kun的博客 3553

剑指offer面试题48(java版):最长不含重复字符的子字符串

welcome to my blog 剑指offer面试题48(java版):最长不含重复字符的子字符串 题目描述 请从字符串中找出一个最长的不包含重复字符的子字符串,计算该最长子字符串的长度。 示例 1: 输入: "abcabcbb" 输出: 3 解释: 因为无重复字符的最长子串是 "abc",所以其长度为 3。 示例 2: 输入: "bbbbb" 输出: 1 解释: 因为无...

littlehaes的博客 1206

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

RU DOS版、EFI版32bit/64bit BIOS常用工具

DOS版、EFI版的RU工具,可用来查看IO、MEM、PCI、SMBIOS等资源。亲测在EFI SHELL下可用。

[算法练习及思路-leetcode剑指offer(Java解法)]No48.最长不含重复字符的子字符串

题号:剑指 Offer 48 题目名:最长不含重复字符的子字符串 原题URL:https://leetcode-cn.com/problems/zui-chang-bu-han-zhong-fu-zi-fu-de-zi-zi-fu-chuan-lcof/ 题目描述 请从字符串中找出一个最长的不包含重复字符的子字符串,计算该最长子字符串的长度。 示例 示例 1: 输入: "abcabcbb" 输出: 3 解释: 因为无重复字符的最长子串是 "abc",所以其长度为 3。 示例 1: 输入: "pwwke

叶落雨飘的博客 322

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

剑指offer(Java实现)48 - 最长不含重复字符的子字符串

最长不含重复字符的子字符串-48 LeetCode-3 请从字符串中找出一个最长的不包含重复字符的子字符串,计算该最长子字符串的长度。 假设字符串中只包含从 ’a’ 到 ’z’ 的字符。 样例 输入:"abcabc" 输出:3 思路: 滑动窗口 通过使用 Hash Set 作为滑动窗口,我们可以用 O(1)的时间来完成对字符是否在当前的子字符串中的检查。回到我们的问题,我们使用 Hash Set...

rookie_0821的博客 258

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

剑指 Offer 48. 最长不含重复字符的子字符串Java

家人们,有进步了,第一次carry中等难度的动态规划题目, 思路一 dp[i]代表以i位置结束的字母的最大不重复字符串 dp[0]=1,因为第一个字母的子串就是它自己 dp[1]=dp[0]+1; 因为b不在[a]中 dp[2]=dp[1]+1;因为c不在[a,b]中 dp[3]=3-0=3;因为a在[a,b,c]中,就用两个a的下标之差计算即可。为什么此时哈希表是[a,b,c]呢,因为j=i-dp[i-1]:这个j 是哈希表的起始坐标,j 是当前位置i减去i-1的最大字串间断,此时j是0 dp[4]=4.

Jireen的博客 330

剑指 Offer 48. 最长不含重复字符的子字符串java题解

class Solution { public int lengthOfLongestSubstring(String s) { Map<Character,Integer> dic=new HashMap<>(); int temp=0,res=0,i=0; for(int j=0;j<s.length();j++){ i=dic.getOrDefault(s.charAt(j),-1);

乾坤未定,你我皆是黑马 310

【Java】 剑指offer(48) 最长不含重复字符的子字符串

本文参考自《剑指offer》一书,代码采用Java语言。 更多:《剑指Offer》Java实现合集 题目    请从字符串中找出一个最长的不包含重复字符的子字符串,计算该最长子字符串的长度。假设字符串中只包含从'a'到'z'的字符。 思路   动态规划法:定义函数f(i)为:以第i个字符为结尾的不含重复字符的子字符串的最大长度。   (1)当第i个字符之前未出现过,则有:f(i)=...

weixin_30776545的博客 172

剑指Offer-题48(Java版):最长不含重复字符的子字符串

参考自:《剑指Offer——名企面试官精讲典型编程题》 题目:最长不含重复字符的子字符串 请从字符串中找出一个最长的不包含重复字符的子字符串,计算该最长子字符串的长度。假设字符串中只包含从’a’到’z’的字符。例如,在字符串中”arabcacfr”,最长非重复子字符串为”acfr”,长度为4。 主要思路:使用动态规划,记录当前字符之前的最长非重复子字符串长度f(i-1),其中i为当前字符的位...

浊酒入清梦的博客 6882

[剑指 offer]48 最长不含重复字符的子字符串 Java实现

题目 请从字符串中找出一个最长的不包含重复字符的子字符串,计算该最长子字符串的长度。 示例 1: 输入: “abcabcbb” 输出: 3 解释: 因为无重复字符的最长子串是 “abc”,所以其长度为 3。 示例 2: 输入: “bbbbb” 输出: 1 解释: 因为无重复字符的最长子串是 “b”,所以其长度为 1。 示例 3: 输入: “pwwkew” 输出: 3 解释: 因为无重复字符的最长子串是 “wke”,所以其长度为 3。 请注意,你的答案必须是 子串 的长度,“pwke” 是一个子序列,不是子.

BedivereAlter的博客 237

【LeetCode】剑指 Offer 48. 最长不含重复字符的子字符串 p236 -- Java Version

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

汤姆lazy的优快云博客 528

剑指offer-JZ48 最长不含重复字符的子字符串(Java版)

描述 请从字符串中找出一个最长的不包含重复字符的子字符串,计算该最长子字符串的长度。 数据范围: \ \text{s.length}\le 40000 s.length≤40000 示例1 输入:"abcabcbb" 返回值:3 说明:因为无重复字符的最长子串是"abc",所以其长度为 3。 示例2 输入:"bbbbb" 返回值:1 说明:因为无重复字符的最长子串是"b",所以其长度为 1。 示例3 输入:"pwwkew" 返回值:3 说明:因为无重复字符的最长子串是 "wke

juanqiao7497的博客 598

【剑指offer】面试题48. 最长不含重复字符的子字符串(java)

请从字符串中找出一个最长的不包含重复字符的子字符串,计算该最长子字符串的长度。 示例1: 输入: "abcabcbb" 输出: 3 解释: 因为无重复字符的最长子串是 "abc",所以其长度为 3。 示例 2: 输入: "bbbbb" 输出: 1 解释: 因为无重复字符的最长子串是 "b",所以其长度为 1。 示例 3: 输入: "pwwkew" 输出: 3 解释: 因为无重复字...

hx1043116928的博客 907

剑指 Offer 48. 最长不含重复字符的子字符串(java+python)

java+python

江浸月的博客 100

剑指offer第二版面试题48:最长不含重复字符的子字符串(java)

题目描述: 请从字符串中找出一个最长的不包含重复字符的子字符串,计算该最长子字符串的长度。假设字符串中只包含从’a’到’z’的字符。例如,在字符串中”arabcacfr”,最长非重复子字符串为”acfr”,长度为4。 分析思路: 使用动态规划,记录当前字符之前的最长非重复子字符串长度f(i-1),其中i为当前字符的位置。每次遍历当前字符时,分两种情况: 1)若当前字符第一次出现,则最长非重...

许文杰的博客 991
上一篇: 47_剑指offer_java_礼物的最大价值
下一篇: 49_剑指offer_java_丑数
Longtermevolution
博客等级 码龄9年 113粉丝 249原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值