Solution 动态规划. f(i)表示包含第i个字符的最长子串. 如果第i个字符没在之前出现过,那么f(i) = f(i - 1) + 1 如果第i个字符在之前出现过,这个时候应该分两种情况,假设与之前出现的距离为d,如果d>f(i - 1) 说明之前出现的字符不在f(i - 1)包含的字符串内,那么f(i) = f(i - 1) + 1, 如果d <= f(i - 1),说明包含的重复字符在f(i - 1)内,那么f(i) = d. Code class Solution { publi…
题意 如题,字符串只含a-z,输出该子串长度.例:"arabcacfr",输出4. 解题思路 递归思想 计f(i)为以第i个字符结尾的最长不含重复字符的子串长度. 状态转移:计d为当前字符出现位置和上次出现该字符的位置之差. (1) 当d>f(i-1),说明字符出现在f(i-1)对应的最长子串外,所以f(i)=f(i-1)+1. (2) d<=f(I-1),说明字符出现在f(i-1)对应的最长子串中,此时说明当前字符与上次出现的改字符之间无重复字符,所以f(i)=d; 用循…
本文参考自<剑指offer>一书,代码采用Java语言. 更多:<剑指Offer>Java实现合集   题目 请从字符串中找出一个最长的不包含重复字符的子字符串,计算该最长子字符串的长度.假设字符串中只包含从'a'到'z'的字符. 思路 动态规划法:定义函数f(i)为:以第i个字符为结尾的不含重复字符的子字符串的最大长度. (1)当第i个字符之前未出现过,则有:f(i)=f(i-1)+1 (2)当第i个字符之前出现过,记该字符与上次出现的位置距离为d 1)如果d<=f(i-1…
剑指 Offer 48. 最长不含重复字符的子字符串 Offer_48 题目详情 解法分析 解法一:动态规划+哈希表 package com.walegarrett.offer; /** * @Author WaleGarrett * @Date 2021/2/8 20:52 */ import java.util.HashMap; /** * 题目描述:请从字符串中找出一个最长的不包含重复字符的子字符串,计算该最长子字符串的长度. */ public class Offer_48 { publ…
Given a string, find the length of the longest substring without repeating characters.(请从子字符串中找出一个最长的不包含重复字符的子字符串) 首先定义函数f(i)表示以第i个字符结尾的不包含重复字符的子字符串的最大长度.我们从左到右扫描字符串中的每个字符.当我们计算第i个字符时,我们已经知道了f(i-1).如果第i个字符之前在字符串中没有出现过,那么f(i)=f(i-1) + 1,显然f(0)=1.如果第i个…
// 面试题48:最长不含重复字符的子字符串 // 题目:请从字符串中找出一个最长的不包含重复字符的子字符串,计算该最长子 // 字符串的长度.假设字符串中只包含从'a'到'z'的字符. #include <string> #include <iostream> // 方法一:蛮力法 //不想说话 // 方法一:动态规划 int longestSubstringWithoutDuplication_2(const std::string& str) { ;//记录当前长度…
题目: 请从字符串中找出一个最长的不包含重复字符的子字符串,计算该最长子字符串的长度.假设字符串中只包含’a~z”的字符.例如,在字符串“arabcacfr"中,最长的不含重复字符的子字符串是“acfr”,长度为4. 题解: 方法一: 使用滑动窗口函数[借助string中的find函数] 方法二: 使用动态规划 //方法一:使用移动窗口 string getLenghtSubstr(const string &str) { )return str; string res, temp; ,…
题目信息 时间: 2019-07-02 题目链接:Leetcode tag: 动态规划 哈希表 难易程度:中等 题目描述: 请从字符串中找出一个最长的不包含重复字符的子字符串,计算该最长子字符串的长度. 示例1: 输入: "abcabcbb" 输出: 3 解释: 因为无重复字符的最长子串是 "abc",所以其长度为 3. 示例2: 输入: "bbbbb" 输出: 1 解释: 因为无重复字符的最长子串是 "b",所以其长度为 1…
题目描述 请从字符串中找出一个最长的不包含重复字符的子字符串,计算该最长子字符串的长度. 示例1: 输入: "abcabcbb" 输出: 3 解释: 因为无重复字符的最长子串是 "abc",所以其长度为 3. 示例2: 输入: "bbbbb" 输出: 1 解释: 因为无重复字符的最长子串是 "b",所以其长度为 1. 示例3: 输入: "pwwkew" 输出: 3 解释: 因为无重复字符的最长子串是 &qu…
问题描述 请从字符串中找出一个最长的不包含重复字符的子字符串,计算该最长子字符串的长度.   示例 1: 输入: "abcabcbb" 输出: 3 解释: 因为无重复字符的最长子串是 "abc",所以其长度为 3. 示例 2: 输入: "bbbbb" 输出: 1 解释: 因为无重复字符的最长子串是 "b",所以其长度为 1. 示例 3: 输入: "pwwkew" 输出: 3 解释: 因为无重复字符的最长子串…