首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

我做了一个递归关系,找出两个字符串中最长的连续公共字符串,如何跳过其中一个字符

要找出两个字符串中最长的连续公共字符串,可以使用递归关系来解决。下面是一个示例的递归函数,可以实现这个功能:

代码语言:txt
复制
def find_longest_common_string(str1, str2):
    # 递归终止条件
    if len(str1) == 0 or len(str2) == 0:
        return ""

    # 如果两个字符串的第一个字符相同
    if str1[0] == str2[0]:
        # 递归调用函数,找出剩余部分的最长公共字符串
        rest_common = find_longest_common_string(str1[1:], str2[1:])
        # 返回当前字符加上剩余部分的最长公共字符串
        return str1[0] + rest_common

    # 如果两个字符串的第一个字符不相同
    else:
        # 分别计算去掉一个字符后的最长公共字符串
        common1 = find_longest_common_string(str1[1:], str2)
        common2 = find_longest_common_string(str1, str2[1:])
        # 返回较长的那个最长公共字符串
        if len(common1) > len(common2):
            return common1
        else:
            return common2

这个递归函数的思路是,如果两个字符串的第一个字符相同,那么最长公共字符串一定包含这个字符,所以可以递归地找出剩余部分的最长公共字符串,并将当前字符加上。如果两个字符串的第一个字符不相同,那么最长公共字符串一定不包含这两个字符,所以可以分别计算去掉一个字符后的最长公共字符串,并返回较长的那个。

使用这个递归函数,可以找出两个字符串中最长的连续公共字符串。例如,对于字符串"abcdefg"和"bcde",调用find_longest_common_string("abcdefg", "bcde"),会返回"bcd"作为最长的连续公共字符串。

需要注意的是,递归算法在处理大规模字符串时可能会导致性能问题,因为会有很多重复的计算。可以考虑使用动态规划等其他方法来优化算法。

关于腾讯云相关产品和产品介绍链接地址,可以根据具体需求选择适合的产品,例如云服务器、云数据库、云存储等。具体的产品介绍和链接地址可以在腾讯云官网上查找。

相关搜索:给定一个字符串,请你找出其中不含有重复字符的 最长子串 的长度。我有一个字符串列表,有些字符串在一个空格中有两个字符串,其中有一个空格,我需要将其拆分成两个单独的字符串如何找出一个列表中的一个字符串是另一个列表中另一个字符串的子字符串的次数?如何比较字符串中的数值并显示其中的一个数值?如何使用foldl来找出一个字母在字符串中重复的次数?如何在C++中从字符串的两个向量创建一个字符串?我如何计算一个字符串中包含了多少次子字符串的和?给定一个单词数组和一个字符串,我如何计算给定字符串中的所有单词我如何在Javascript中处理一个非常大的字符串?在gnu / linux中,我如何扫描一个从初始字符串(foo)到最终字符串(bar)的文件?如何使用LINQ获取列表<string>中的最后一个字符串,其中字符串'P'在字符串的第二个位置?我需要比较python中的两个嵌套列表,以找出第一个列表的字符串与第二个列表中的字符串不匹配的地方我需要找出字符串js中两个字符之间的距离。我有一个解决方案,但是我不能理解与if语句相关的代码片段在球拍中,我如何组合列表中的字符串来创建一个句子如何通过一个对象中的两个独立字符串来过滤数组?如何查看两个列表,找到匹配的列表,并从其中一个列表中提取关联的字符串?两个字符串的操作之后如何在结果中也获得一个字符串我如何识别R中一个向量中的随机子字符串的长度?如何从Firestore中获取文档,其中字段是一个数组,与Kotlin中的字符串匹配?我如何接收一个函数和一个字符串,并记录对字符串中每个字母调用函数的结果?
相关搜索:
页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

  • Java实现给定一个字符串,请你找出其中不含有重复字符 最长子串 长度

    给定一个字符串,请你找出其中不含有重复字符 最长子串 长度 输入: "pwwkew" 输出: 3 解释: 因为无重复字符最长子串是 "wke",所以其长度为 3。...请注意,你答案必须是 子串 长度,"pwke" 是一个子序列,不是子串。...题解 : 有点难度哈: 1 开一个哈希集合(不能有重复key) 2 开一个 头指针 尾部指针 和最大值长度ans 3 头指针不断后移, 不断往集合里面塞元素( 如果遇到集合里面有的key...,更新keyValue ,+1 ,因为+1 是为了让start头指针移到重复元素后面的那个元素上) 4 更新 最大长度 ans (通过比较 头尾指针之差+1 和 ans 取最大值)

    86910

    2021-11-13:至少有 K 个重复字符最长子串。给你一个字符串 s 和一个整数 k ,请你找出 s 最长子串, 要求

    2021-11-13:至少有 K 个重复字符最长子串。给你一个字符串 s 和一个整数 k ,请你找出 s 最长子串, 要求该子串每一字符出现次数都不少于 k 。返回这一子串长度。...提示:1 <= s.length <= 104次方,s 仅由小写英文字母组成,1 <= k <= 105次方。力扣395。 答案2021-11-13: 滑动窗口,遍历26次。...require++ { // 3种 // a~z 出现次数 count := make([]int, 26) // 目前窗口内收集了几种字符了...collect := 0 // 目前窗口内出现次数>=k次字符,满足了几种 satisfy := 0 // 窗口右边界...R := -1 for L := 0; L < N; L++ { // L要尝试每一个窗口最左位置 // [L..R] R+1 for

    55450

    动态规划,它来了

    你好好想想枚举一下正收入囊中,那个问题没意义连续子数组最大乘积 给你一个整数数组 nums ,请你找出数组乘积最大连续子数组(该子数组至少包含一个数字),并返回该子数组所对应乘积。...给定两个字符串 text1 和 text2,返回这两个字符串最长 公共子序列 长度。如果不存在 公共子序列 ,返回 0 。...给定两个字符串str1和str2,输出两个字符串最长公共子串。...例如 abceef 和a2b2cee3f最长公共子串就是cee。公共子串是两个串中最长连续相同部分。 如何分析呢?...动态规划套路跟递归有点点相似,主要是找到状态转移方程,有时候考虑问题不能一步想太多(想太多可能就把自己绕进去了),而动态规划就是要大家对数值上下转换计算需要了解其中关系

    53920

    大厂面试系列(七):数据结构与算法等

    链表找环入口 单链表逆序 两个链表合并,最长公共子串问题 单链表逆序,快排,数组两个数和等于目标值 数组 在M个大小数组中找到第K大数(最大堆) 现在有一个数组[1,2,3,4],请实现算法...JDK1.8采用红黑树特性,以及采用红黑树理由而不采用AVL和B树原因? 一个二叉搜索树,找出两个节点公共祖先。 给定一个二叉搜索树, 找到该树两个指定节点最近公共祖先。...翻转字符串,反转句子等。 判断一串字符串里括号最大有效长度。用动态规划实现 给一个字符串找出连续相同字符,如果有两个以上相同,取ASCII码小。...写一个fibnaccio相关例子 输入两个字符串str1 str2和整数n,要求两个数以n进制相加,然后输出字符串str3 就是二位数组如何进行螺旋输出 然后第二道算法题是如何从25匹马通过赛马形式找到最快...200万行数据,如何在在每一行尾部追加一个字符; 求一个字符串最长不重复子串长度 三个有符号整型(long)数a, b, c,怎么判断a+b > c?

    1.2K20

    公司数据结构+算法面试100题

    字符串找出连续最长数字串,并把这个串长度返回, 并把这个最长数字串付给其中一个函数参数outputstr所指内存。...(算法) 百度面试: 1.用天平(只能比较,不能称重)从一堆小球找出其中唯一一个较轻,使用x次天平, 最多可以从y个小球找出较轻那个,求y与x关系式。...56.最长公共字串(算法、字符串)。 题目:如果字符串所有字符按其在字符串顺序出现在另外一个字符串, 则字符串一称之为字符串子串。...注意,并不要求子串(字符串一)字符必须连续出现在字符串。 请编写一个函数,输入两个字符串,求它们最长公共子串,并打印出最长公共子串。...例如:输入两个字符串BDCABA和ABCBDAB,字符串BCBA和BDAB都是是它们最长公共子串, 则输出它们长度4,并打印任意一个子串。

    3.3K90

    答粉丝问|求给定字符串最长公共子串

    再结合“公共”来看,可知公共子串必定由给定字符串集中最短字符串决定,所以小编想到了先选取出给定字符串集中最短字符串进行切片操作。 如何选最短字符串小编就不多说了,我们直接来看如何切片。...这自然是有的,小编发现每一个长度字符串个数n与原字符串长度L和子串长度l有n=L-l+1关系找出这个关系后就可以对循环定次数了,同样切片下标自然也是可以运用这个关系。...lis长度及N-1相等,说明该子字符串在lis一个字符串 num2 = 1 #找到一个最长公共字符串计数器num2就等于1...if num2 == 1: break #如果循环完一种长度所有种子字符串且找到了最长公共字符串,循环终止 结语 小编刚拿到这个问题时候,以为很简单,随便做了一下...,在检测时才发现漏洞百出,最后也是在纸上分析了切片规律,找出其中逻辑关系,才得以解决这个问题,所以小编想告诉大家,遇到问题还是先分析分析,最好是在纸上画一画。

    62320

    想进大厂,这是你绕不过门槛

    两个二叉树是否互为镜像 翻转二叉树or镜像二叉树 求两个二叉树最低公共祖先节点 二叉树前序遍历 二叉树序遍历 二叉树后序遍历 前序遍历和后序遍历构造二叉树 在二叉树插入节点 输入一个二叉树和一个整数...找出数组中和为S一对组合,找出一组就行 求一个数组连续子向量最大和 寻找一数组前K个最大数 1.5 排序 用Java写一·个冒泡排序? 排序都有哪几种方法?...什么时候时间最差 什么是快排算法;以及什么是稳定性排序,快排是稳定性吗;快排算法最差情况推导公式 2.3 动态规划 手写代码:最长公共连续子序列 手写代码:求一个字符串最长回文子串 手写代码:求最大子序和...2.6 字符串 给你一个字符串找出一个不重复字符,如“abbbabcd”,则第一个不重复就是c 最长公共前缀 有效字母异位词 3.Golang 3.1 递归&回溯 手写代码:两数相加 手写代码...:括号生成 手写代码:验证二叉搜索树 二叉树最大深度 二叉树最近公共祖先 全排列 3.2 并查集 手写代码:省份数量 手写代码:岛屿数量 手写代码:最长连续数列 3.3 字符串 手写代码:转换成小写字母

    68150

    2022-09-17:一个字符串s,表示仓库墙 与 货物,其中‘|‘表示墙,‘*‘表示货物。 给定一个起始下标start和一个终止下标end, 找出子串

    2022-09-17:一个字符串s,表示仓库墙 与 货物,其中'|'表示墙,'*'表示货物。给定一个起始下标start和一个终止下标end,找出子串 被墙包裹货物 数量。...比如:s = "|||*",start = 1, end = 7,start和end截出子串是 "||*",被 '|'包裹 '*' 有两个,所以返回2,现在给定一系列start,startIndices...[],和对应一系列end ,endIndices[]。...返回每一对start,end截出来货物数量。数据规模:字符串s长度<=10^5,startIndices长度 == endIndices长度 <=10^5。亚马逊货物和墙问题。

    55110

    秋招算法岗面经(主要是撸代码题)

    GBDT和LSTM,所以这两个知识点是几乎逢面必问便导致其他机器学习深度学习知识点就问比较少,所以我主要贴出面试遇到部分代码题,供大家参考。...百度: 一面:1、一个数组只有两个数字只出现了一次,其他都是两次,找出两个数字(异或方法)。2、二叉树找出两个结点最近公共祖先。3、画出LSTM网络结构,写出GBDT过程。...搜狐(实习): 一面:输入一个表达式字符串,输出该表达式值(递归方法)。 二面:反转字符串,用c++做。...二面:找出n以内所有质数,优化时间复杂度。 三面:1、两个字符串最长公共子序列(动态规划)。2、求一棵二叉树宽度(宽度即为该二叉树结点最多某层结点个数)(队列实现)。...2、给定一个方法将些许个小字符串可以唯一地合成一个字符串,又可将这个大字符串拆解出原来些许个小字符串,除了字符串不能用其他数据结构。

    82110

    动态规划(dynamic programming)

    而无权有向图最长路径  q-t最长路径是是q-r-t 但 q-r缺不是q-r最长路径  q-s-t-r是一条更长路径 所以无权有向图最长路径不具有最优子结构 2、关于动态规划一个要点便是思考稍小子问题和下一个子问题间是如何转化也就是如何定义状态转移方程...状态转移方程定义和我们是如何定义子问题有关 比如:求最长连续回文串:   给出一个字符串S,求最长连续回文串,例如串 babcbabcbaccba 最长回文是:abcbabcba 我们如果定义...3、求最长连续回文串:    给出一个字符串S,求最长连续回文串,例如串 babcbabcbaccba 最长回文是:abcbabcba 4、字符串相似度: 把两个字符串变成相同基本操作定义如下: 1...删除一个字符(如 jackbllog 变成 jackblog) 针对于 jackbllog到jackblog 只需要删除一个或增加一个 l 就可以把两个字符串变为相同。...那么jackbllog和jackblog相似度为 1/1+1=1/2=0.5 也就是所两个字符串相似度是 0.5。 给定任意两个字符串,你是否写出一个是否来计算出它们相识度。

    1.4K50

    精读《算法 - 动态规划》

    比如寻路算法,同样两条路线计算,有一段路线是公共,是计算必经之路,那么只算一次就好了,当计算下一条路时,遇到这个子路,直接拿第一次计算缓存即可。...好了,经过这么详细解释,相信你已经完全了解动态规划解题套路,后面的题目解释方式就不会这么啰嗦了! 这道题如果再复杂一点,不连续怎么办呢?让我们看看最长递增子序列问题吧。...我们看一道这样题目:最长有效括号。 最长有效括号 最长有效括号是道困难题,题目如下: 给你一个只包含 '(' 和 ')' 字符串找出最长有效(格式正确且连续)括号子串长度。...二维动态规划就是用两个变量表示 DP,即 dp(i,j),一般在二维数组场景出现较多,当然也有一些两个数组之间关系,也属于二维动态规划,为了继续探讨字符串问题,选择了字符串问题二维动态规划范例,编辑距离这道题来说明...你可以对一个单词进行如下三种操作: 插入一个字符 删除一个字符 替换一个字符 只要是字符串问题,基本上 i 都表示以第 i 项结尾字符串,但这道题有两个单词字符串,为了考虑任意匹配场景,必须用两个变量表示

    57540

    动态规划问题-LeetCode 5 (经典DP问题、LCS问题)

    作者:TeddyZhang,公众号:算法工程师之路 DP基础问题:LeetCode #5 1 编程题 【LeetCode #5】最长回文子串 给定一个字符串 s,找到 s 中最长回文子串。...给定两个字符串A和B,长度分别为m和n,要求找出它们最长公共子序列,并返回其长度。...解题思路: 我们首先定义动态规划矩阵dp[i][j]为字符串A一个字符到第i个字符以及字符串B一个字符到第j个字符最长公共子序列。...] } }; 【经典动态规划】最长公共子串 给定两个字符串A和B,长度分别为m和n,要求找出它们最长公共子串,并返回其长度。...解题思路: 最长公共子串问题不同于最长公共子序列,由于子串连续,而子序列不一定连续。在上一个子序列dp[i][j]是非减,因此最后返回最大公共子序列时,返回是dp[n][m]。

    2.2K10

    C++ 动态规划经典案例解析之最长公共子序列(LCS)_窥探递归和动态规划一致性

    前言 动态规划处理字符相关案例,求最长公共子序列以及求最短编辑距离,算是经典经典案例。 讲解此类问题算法在网上一抓应用一大把,即便如此,还是忍不住有写此文想法。...最长公共子序列(LCS) 2.1 问题描述 最长公共子序列,指找出 2 个或多个字符串最长公共子序列。 如字符串 s1=kabc和s2=taijc,其最长公共子序列是ac。...Tips: 子序列只要求其中字符保持和原字符串中一样顺序,而不一定连续。...如为字符串s1设置位置指针 i,为字符串s2设置位置指针j,则问题可以抽象为如下函数。函数语义:i和j作为起始位置时字符串s1,s2最长公共子序列。...无论由上向下,还是由下向上,其本质都是知道子问题答案后,再求解出大问题答案。动态规划算法是直接了当,递归是迂回求解。 现以求字符串最长公共子序列为例,讲解动态规划求解过程。

    52720

    重学KMP!

    给定一个 haystack 字符串一个 needle 字符串,在 haystack 字符串找出 needle 字符串出现一个位置 (从0开始)。如果不存在,则返回 -1。...那么什么是前缀表:记录下标i之前(包括i)字符串,有多大长度相同前缀后缀。 最长公共前后缀? 文章字符串前缀是指不包含最后一个字符所有以第一个字符开头连续子串。...而最长公共前后缀里面的“公共”,更像是说前缀和后缀公共长度。这其实并不是前缀表所需要。 所以字符串a最长相等前后缀为0。字符串aa最长相等前后缀为1。字符串aaa最长相等前后缀为2。...(注意字符串前缀是指不包含最后一个字符所有以第一个字符开头连续子串;后缀是指不包含第一个字符所有以最后一个字符结尾连续子串。) ? 长度为前2个字符子串aa,最长相同前后缀长度为1。...本题要在文本串字符串找出模式串出现一个位置 (从0开始),所以返回当前在文本串匹配模式串位置i 减去 模式串长度,就是文本串字符串中出现模式串一个位置。

    47720

    详解最长公共子序列问题,秒杀三道动态规划题目

    不知道大家做算法题有什么感觉,总结出来做算法题技巧就是,把大问题细化到一个点,先研究在这个小点上如何解决问题,然后再通过递归/迭代方式扩展到整个问题。...最长公共子序列 计算最长公共子序列(Longest Common Subsequence,简称 LCS)是一道经典动态规划题目,大家应该都见过: 给你输入两个字符串s1和s2,请你找出他们俩最长公共子序列...前文 子序列解题模板 总结一个规律: 对于两个字符串求子序列问题,都是用两个指针i和j分别在两个字符串上移动,大概率是动态规划思路。...至此,最长公共子序列问题就完全解决了,用是自顶向下带备忘录动态规划思路,我们当然也可以使用自底向上迭代动态规划思路,和我们递归思路一样,关键是如何定义dp数组,这里也写一下自底向上解法吧:...这也算是在两个字符串求子序列常用思路吧,建议好好体会,多多联系~

    75530

    一步一步分析最长公共子序列问题

    今天题目也是一道动态规划题,它是这样: 给定两个字符串s1跟s2,返回这两个字符串最长公共子序列长度。...一个字符串 子序列 是指这样一个字符串:它是由原字符串在不改变字符相对顺序情况下删除某些字符(也可以不删除任何字符)后组成字符串。若这两个字符串没有公共子序列,则返回 0。...我们可以尝试这两个字符串所有子序列去找到最长,一次我们比较一个字符串,那么对于在s1上i位置字符跟在s2上j位置字符,我们有两种选择: 如果s1[i]跟s2[j]相等,那我们再去递归剩下元素。...对于在s1索引i,跟s2索引j,我们有两种选择: 如果s1[i]跟s2[j]相等,那最长公共子序列长度就等于1+在两个字符串到i-1跟j-1最长公共子序列长度。...从长度为0子序列开始,只要有任意一个字符串长度是0,最长公共子序列长度就是0。

    65730

    算法:动态规划

    给定两个字符串 text1 和 text2,返回这两个字符串最长 公共子序列 长度。...如果不存在 公共子序列 ,返回 0 。 一个字符串 子序列 是指这样一个字符串:它是由原字符串在不改变字符相对顺序情况下删除某些字符(也可以不删除任何字符)后组成字符串。...例如,"ace" 是 "abcde" 子序列,但 "aec" 不是 "abcde" 子序列。 两个字符串 公共子序列 是这两个字符串所共同拥有的子序列。...解题思路: 暴力法:每个元素比对时候都与另外一个字符串比较一下,判断是否有相同元素以及位置前后 动态规划:定义OPT(i, j)代表字符串t1[0:i]和字符串t2[0:j]最长公共子序列长度 动态规划...给你一个字符串 s ,找出其中最长回文子序列,并返回该序列长度。

    1.6K10
    领券