当前位置:网站首页>leetcode 剑指 Offer 48. 最长不含重复字符的子字符串
leetcode 剑指 Offer 48. 最长不含重复字符的子字符串
2022-07-30 08:52:00 【kt1776133839】
题目描述:
请从字符串中找出一个最长的不包含重复字符的子字符串,计算该最长子字符串的长度。
样例:
示例 1:
输入: "abcabcbb"
输出: 3
解释: 因为无重复字符的最长子串是 "abc",所以其长度为 3。
示例 2:
输入: "bbbbb"
输出: 1
解释: 因为无重复字符的最长子串是 "b",所以其长度为 1。
示例 3:
输入: "pwwkew"
输出: 3
解释: 因为无重复字符的最长子串是 "wke",所以其长度为 3。
请注意,你的答案必须是 子串 的长度,"pwke" 是一个子序列,不是子串。
提示:
s.length <= 40000
解题思路:
动态规划:
状态定义: 设动态规划列表 dp ,dp[j] 代表以字符 s[j] 为结尾的 “最长不重复子字符串” 的长度。
转移方程: 固定右边界 j ,设字符 s[j] 左边距离最近的相同字符为 s[i] ,即 s[i]=s[j]。
当 i<0 ,即 s[j] 左边无相同字符,则 dp[j]=dp[j−1]+1;
当 dp[j−1]<j−i,说明字符 s[i] 在子字符串 dp[j−1]区间之外 ,则 dp[j]=dp[j−1]+1;
当 dp[j−1]≥j−i,说明字符 s[i] 在子字符串 dp[j−1] 区间之中 ,则 dp[j] 的左边界由 s[i]决定,即 dp[j]=j−i ;
当 i<0 时,由于 dp[j−1]≤j恒成立,因而 dp[j−1]<j−i恒成立,因此分支 1. 和 2. 可被合并。

返回值: max(dp)\max(dp)max(dp) ,即全局的 “最长不重复子字符串” 的长度。
Java程序:
class Solution {
public int lengthOfLongestSubstring(String s) {
Map<Character, Integer> dic = new HashMap<>();
int res = 0, tmp = 0;
for(int j = 0; j < s.length(); j++) {
int i = dic.getOrDefault(s.charAt(j), -1); // 获取索引 i
dic.put(s.charAt(j), j); // 更新哈希表
tmp = tmp < j - i ? tmp + 1 : j - i; // dp[j - 1] -> dp[j]
res = Math.max(res, tmp); // max(dp[j - 1], dp[j])
}
return res;
}
}
边栏推荐
猜你喜欢
随机推荐
分布式系统大势所趋,银行运维如何与时俱进?
MySQL【运算符】
激活数据潜力 亚马逊云科技重塑云上存储“全家桶”
STM8L_库函数-模板搭建
Concise Notes on Integrals - Types of Curve Integrals of the First Kind
One article to understand twenty kinds of switching power supply topologies
无法定位程序输入点ucrtbase.abort于动态链接库api-ms-win-crt-runtime-|1-1-0.dll上
企业数字化建设,自研还是采购?
Access to display the data
MySQL之COUNT性能到底如何?
How to use Jmeter to carry out high concurrency in scenarios such as panic buying and seckill?
Unity performance analysis Unity Profile performance analysis tool
Oracle 创建和操作表
Is R&D moving to FAE (Field Application Engineer), is it moving away from technology?Is there a future?
20220728使用电脑上的蓝牙和汇承科技的蓝牙模块HC-05配对蓝牙串口传输
新手必备!最全电路基础知识讲解
Detailed description of iperf3 parameter options
CSDN21天学习挑战赛
Leetcode - 990: equations of satisfiability
Excel xlsx file not supported两种解决办法【杭州多测师】【杭州多测师_王sir】









