当前位置:网站首页>Simulation volume leetcode [general] 1143 Longest common subsequence
Simulation volume leetcode [general] 1143 Longest common subsequence
2022-07-06 06:17:00 【Encounter simulation volume】
1143. Longest common subsequence
Given two strings text1 and text2, Returns the longest of these two strings Common subsequence The length of . If it doesn't exist Common subsequence , return 0 .
A string of Subsequence This is a new string : It is to delete some characters from the original string without changing the relative order of the characters ( You can also delete no characters ) After the composition of the new string .
for example ,“ace” yes “abcde” The subsequence , but “aec” No “abcde” The subsequence .
Two strings of Common subsequence Is the subsequence shared by these two strings .
Example 1:
Input :text1 = “abcde”, text2 = “ace”
Output :3
explain : The longest common subsequence is “ace” , Its length is 3 .
Example 2:
Input :text1 = “abc”, text2 = “abc”
Output :3
explain : The longest common subsequence is “abc” , Its length is 3 .
Example 3:
Input :text1 = “abc”, text2 = “def”
Output :0
explain : The two strings have no common subsequence , return 0 .
Tips :
1 <= text1.length, text2.length <= 1000
text1 and text2 It only consists of lowercase English characters .
source : Power button (LeetCode)
link :https://leetcode-cn.com/problems/longest-common-subsequence
Copyright belongs to the network . For commercial reprint, please contact the official authority , Non-commercial reprint please indicate the source .
Code :
from leetcode_python.utils import *
class Solution:
def __init__(self):
pass
def longestCommonSubsequence(self, text1: str, text2: str) -> int:
length1,length2 = len(text1),len(text2)
if 0==length1 and 0==length2:return 0
this_dp = [0]*(length1+1)
for to_word2 in range(length2+1):
last_dp = this_dp.copy()
for from_word1 in range(length1+1):
if 0==from_word1 or 0==to_word2:
this_dp[from_word1] = 0
elif text1[from_word1-1]==text2[to_word2-1]:
this_dp[from_word1] = last_dp[from_word1-1] + 1
else:
this_dp[from_word1] = max(this_dp[from_word1 - 1], last_dp[from_word1])
print(f'to w2[{
to_word2}-1], {
this_dp}')
return this_dp[-1]
def minDistance_583_ Deletion of two strings (self, word1: str, word2: str) -> int:
length1,length2 = len(word1),len(word2)
if 0==length1 and 0==length2:return 0
this_dp = [0]*(length1+1) # word1 Each letter of to word2 The number of times each letter needs to be deleted
for to_word2 in range(length2+1):
last_dp = this_dp.copy()
for from_word1 in range(length1+1):
if 0==from_word1 or 0==to_word2: # consider word1 Delete to 0 The situation of
this_dp[from_word1] = from_word1 + to_word2
elif word1[from_word1-1]==word2[to_word2-1]:
this_dp[from_word1] = last_dp[from_word1-1]
else:
this_dp[from_word1] = min(this_dp[from_word1 - 1], last_dp[from_word1]) + 1
print(f'to w2[{
to_word2}-1], {
this_dp}')
return this_dp[-1]
def test(data_test):
s = Solution()
return s.longestCommonSubsequence(*data_test)
def test_obj(data_test):
result = [None]
obj = Solution(*data_test[1][0])
for fun, data in zip(data_test[0][1::], data_test[1][1::]):
if data:
res = obj.__getattribute__(fun)(*data)
else:
res = obj.__getattribute__(fun)()
result.append(res)
return result
if __name__ == '__main__':
datas = [
["abcde","ace"],
["abc","abc"],
["abc","def"],
]
for data_test in datas:
t0 = time.time()
print('-' * 50)
print('input:', data_test)
print('output:', test(data_test))
print(f'use time:{
time.time() - t0}s')
remarks :
GitHub:https://github.com/monijuan/leetcode_python
CSDN Summary : Simulation volume Leetcode Summary of questions _ Paper blog -CSDN Blog
You can add QQ Group communication :1092754609
leetcode_python.utils See the description on the summary page for details
First brush questions , Then generated by script blog, If there is any mistake, please leave a message , I see it will be revised ! thank you !
边栏推荐
猜你喜欢

The latest 2022 review of "graph classification research"

How to extract login cookies when JMeter performs interface testing
![[C language] string left rotation](/img/5f/66bcc8f992108bf3b7e455709d3174.png)
[C language] string left rotation

LeetCode 729. 我的日程安排表 I

Expose the serial fraudster Liu Qing in the currency circle, and default hundreds of millions of Cheng Laolai

JWT-JSON WEB TOKEN

数据库隔离级别

技术分享 | 常见接口协议解析

F - true liars (category and search set +dp)

二维码的前世今生 与 六大测试点梳理
随机推荐
Cannot create PoolableConnectionFactory (Could not create connection to database server. 错误
Seven imperceptible truths in software testing
Detailed explanation of P problem, NP problem, NPC problem and NP hard problem
[C language] qsort function
MySQL之基础知识
Caused by:org. gradle. api. internal. plugins . PluginApplicationException: Failed to apply plugin
MFC关于长字符串unsigned char与CString转换及显示问题
曼哈顿距离与曼哈顿矩形-打印回字型矩阵
全程实现单点登录功能和请求被取消报错“cancelToken“ of undefined的解决方法
Win10 cannot operate (delete, cut) files
【无App Push 通用测试方案
F - true liars (category and search set +dp)
G - Supermarket
Manhattan distance and Manhattan rectangle - print back font matrix
Buuctf-[bjdctf2020]zjctf, but so (xiaoyute detailed explanation)
模拟卷Leetcode【普通】1314. 矩阵区域和
【Postman】动态变量(也称Mock函数)
Selenium source code read through · 9 | desiredcapabilities class analysis
【C语言】字符串左旋
【Postman】Monitors 监测API可定时周期运行