Python最长公共子串

article/2025/9/20 13:09:26

Python最长公共子串

方法一

最简单最容易想到的方法,去数组第一个元素为最长公共前缀,如果是,就return,如果不是就减去最后一个单词。只到找到位置。

class Solution:def longestCommonPrefix(self, strs):""":type strs: List[str]:rtype: str"""if len(strs) ==0:return ''prefix = strs[0]for i in range(1,len(strs)):while prefix != strs[i][0:len(prefix)]:prefix = prefix[0:len(prefix)-1]if prefix == '':return ''return prefix

改进版:

class Solution:def longestCommonPrefix(self, strs):""":type strs: List[str]:rtype: str"""if len(strs) == 0:return ""prefix = strs[0]for s in strs:while s.find(prefix) != 0:prefix = prefix[0:len(prefix) - 1]if prefix == "":return prefixreturn prefix

方法二

从第一单词的第一个字母往后加,算法速度和前面差不多。

class Solution:def longestCommonPrefix(self, strs):""":type strs: List[str]:rtype: str"""if len(strs)== 0:return ''prefix =''for i in range(len(strs[0])):prefix += strs[0][i]for x in strs:if x.find(prefix)!=0:return prefix[0:len(prefix)-1]return prefix

方法三

分治法,于排序算法中归并排序的思想类似。

class Solution:def longestCommonPrefix(self, strs):""":type strs: List[str]:rtype: str"""if len(strs) == 0:return ''return self.longest_prefix(strs, 0, len(strs)-1)def longest_prefix(self,strs, I, r):if I == r:return strs[I]else:mid = (I + r) // 2lcpL = self.longest_prefix(strs, I, mid)lcpR = self.longest_prefix(strs, mid + 1, r)return self.commonprefix(lcpL, lcpR)def commonprefix(self,lcpL, lcpR):Min = min(len(lcpL), len(lcpR))for i in range(Min):if lcpL[i] != lcpR[i]:return lcpL[0:i]return lcpL[0:Min]

第四种

二分法:



由此可以看出,二分法还是快的呀!!!

class Solution:def longestCommonPrefix(self, strs):""":type strs: List[str]:rtype: str"""if len(strs) == 0:return ''Min = 2**32for i in strs:Min = min(Min,len(i))low, high = 1, Minwhile low <= high:mid = (low + high) //2if self.iscommonPrefix(strs,mid):low = mid + 1else:high = mid - 1return strs[0][0:(low+high)//2]def iscommonPrefix(self,strs,length):str1 = strs[0][0:length]for i in range(1,len(strs)):if strs[i].find(str1)!=0:return Falsereturn True

http://chatgpt.dhexx.cn/article/kn5M3kVG.shtml

相关文章

最大公共子串c语言,最长公共子串(动态规划)

来源&#xff1a;https://www.cnblogs.com/fanguangdexiaoyuer/p/11281179.html 1 描述 有两个字符串(可能包含空格),请找出其中最长的公共连续子串,输出其长度。(长度在1000以内) 例如&#xff1a; 输入&#xff1a;abcde bcd 输出&#xff1a;3 2 解析 1、把两个字符串分别以…

求最长公共子串

内容: 采用顺序结构存储串&#xff0c;设计实现求串s和串t的一个最长公共子串的算法。 步骤&#xff1a; 算法分析 本题算法采用顺序存储结构求串s和串t的最大公共子串。串1用i指针&#xff0c;串2用t指针&#xff0c;对每个i&#xff0c;求从i开始的连续字符串与从j开始的连…

最长公共子串计算C++

公共字串计算&#xff08;最长公共子串/序列&#xff09;C 描述 题目标题&#xff1a; 计算两个字符串的最大公共字串的长度&#xff0c;字符不区分大小写 输入 输入两个字符串 输出 输出一个整数 样例输入 asdfas werasdfaswer 样例输出 6 思路 暴力求解 此题用cin即可 代…

python实现最长公共子串

介绍 子串和子序列的意思不一样&#xff0c;如下图所示&#xff0c;子序列不要求连续&#xff0c;只需要在给定序列中出现过&#xff0c;并且相对顺序一致。而子串需要连续。 图片来自动态规划 最长公共子序列 过程图解 最长公共子串&#xff1a; 同时出现在两个字符串中的最…

Leetcode——最长公共子序列 / 最长公共子串

1. 最长公共子序列 &#xff08;1&#xff09;DFS暴搜&#xff08;超时&#xff09; class Solution{public static int longestCommonSubsequence(String text1, String text2) {char[] t1Chars text1.toCharArray();char[] t2Chars text2.toCharArray();return process(t1…

C语言----最长公共子串(动态规划)

定义dp[i][j]表示字符串str1中第i个字符和str2种第j个字符为最后一个元素所构成的最长公共子串。如果要求dp[i][j]&#xff0c;也就是str1的第i个字符和str2的第j个字符为最后一个元素所构成的最长公共子串&#xff0c;我们首先需要判断这两个字符是否相等。 如果不相等&#x…

最长公共子串

最长公共子串 原题链接&#xff1a;https://www.lintcode.com/problem/79 题目 给出两个字符串&#xff0c;找到最长公共子串&#xff0c;并返回其长度。 子串的字符应该连续的出现在原字符串中&#xff0c;这与子序列有所不同。 样例 样例 1&#xff1a; 输入&#xff1a…

动态规划——最长公共子串,没有比这更通俗易懂的了

前言 动态规划是大厂的热门考点&#xff0c;其中最长公共子串与最长公共子序列这两道题出现得尤其频繁&#xff0c;这两道题其实有挺多变种&#xff0c;很适合考察侯选人对动态规划的掌握情况&#xff0c;今天我们就先来看看如何求解最长公共子串&#xff0c;图文并茂&#xff…

SQL中字符串拼接方法(MySQL,SQLServer)

1 SQLServer &#xff08;1&#xff09;用号实现字符串拼接 select 123456; &#xff08;2&#xff09;用concat()内置函数实现字符串拼接 注&#xff1a;SQLServer 2012及更高版本才支持conconcat()函数。 select concat(123,456);//两个字符串拼接 2 MySQL &#xff0…

mysql 使用group by分组后对某个字段值拼接成字符串方法,一般人都不知道!

只需要使用GROUP_CONCAT函数可以在使用groupby分组后&#xff0c;将某个字段的值进行拼接合并 使用示例&#xff1a; 数据表&#xff1a;testTb 使用 GROUP_CONCAT函数来实现&#xff0c;我们的sql可以这样写 Select albumId,GROUP_CONCAT(name) from testTb group by albumI…

MySql查询结果拼接成字符串

背景&#xff1a;做SQL查询时会经常需要&#xff0c;把查询的结果拼接成一个字符串。 解决方法&#xff1a; 通过 group_concat 函数 1.正常查询 如下: select id result from ctp_enum_item limit 100; 2.拼接结果 如下 select group_concat("",id,"") r…

MySQL 字符串拼接

在Mysql 数据库中存在两种字符串连接操作.具体操作如下 一. 语法: 1. CONCAT(string1,string2,…) 说明 : string1,string2代表字符串,concat函数在连接字符串的时候&#xff0c;只要其中一个是NULL,那么将返回NULL 例1: 例2: 2. CONCAT_WS(separator,str1,str2,...) 说明 : …

MySQL字符串合并

MySQL有几种合并字符串的方式&#xff0c;下面来介绍一下 CONCAT函数 concat(str1, str2,...) 返回结果为连接参数产生的字符串&#xff0c;如果有任何一个参数为null&#xff0c;则返回值为null。 mysql> select concat(www,MySQL,substringIndex,com) ----------------…

mysql concat字符串拼接函数使用

目录 1、concat 2、concat_ws 3、group_concat 1、concat select CONCAT(h,e,llo) from dual; 2、concat_ws 指定分隔符进行字符串的拼接 select CONCAT_WS(_,h,e,llo) from dual;3、group_concat 用法&#xff1a; group_concat( [distinct] {要连接的字段}[order by …

MySQL如何分组拼接字符串?

上一篇文章 跨表更新&#xff0c;看到自己写的SQL像个憨憨 写了关于跨表个更新的内容。一年过的很快&#xff0c;文中后来的两位员工 馮大 和 馮二 也要面对无情的 KPI 考核了&#xff0c;他们工作干的很不错&#xff0c;performance 分别是 4 和 5 新需求来了&#xff0c;静悄…

MySQL字符串拼接函数

MySQL字符串拼接函数有以下三个&#xff1a; CONCATCONCAT_WSGROUP_CONCAT 1.CONCAT 说明 对指定字符进行拼接 语法 CONCAT(str1,str2,...) 语法说明&#xff1a; CONCAT(字符1,字符2,...) 实例 SELECT CONCAT(this ,is ,a ,demo) AS result FROM DUAL2.CONCAT_WS 说明 …

mysql 实现字符串的拼接

在Mysql 数据库中存在两种字符串连接操作.具体操作如下 一. 语法: 1. CONCAT(string1,string2,…) 说明 : string1,string2代表字符串,concat函数在连接字符串的时候&#xff0c;只要其中一个是NULL,那么将返回NULL 例1: 例2: 2. CONCAT_WS(separator,str1,str2,...) 说明 :…

MySQL 字符串拼接 - 多种字符串拼接实战案例

本文首发&#xff1a;MySQL 字符串拼接 - 多种字符串拼接实战案例 - 卡拉云 MySQL 字符串拼接可以使多个字段的值组成一个集合&#xff0c;不仅可以拼接字符串与字符串、空格、特殊符号甚至可以拼接中文文本&#xff0c;方便我们在不同场景下应用。 本教详细讲解 CONCAT() 和…

MySQL字符串拼接的两种方式

第一种&#xff1a; MySQL自带语法Concat(string1,string2,string3...)&#xff0c;此处是直接把string1和string2等等的字符串拼接起来&#xff08;无缝拼接哦&#xff09; 说明&#xff1a;此方法在拼接的时候如果有一个值为NULL&#xff0c;则返回NULL select concat(&qu…

MySQL字符串拼接(函数)

最近帮助处理数据,需要批量更新数据,遂上网查了查方法,在此记录一下。我的原始数据如下: 一.CONCAT()函数 说明 : CONCAT(string1,string2,string3...)&#xff0c;此处是直接把string1、string2和string3等等的字符串无缝拼接起来&#xff0c;返回结果为连接参数产生的字符…