当前位置:网站首页>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 !
边栏推荐
- Web界面元素的测试
- 模拟卷Leetcode【普通】1447. 最简分数
- B - The Suspects
- B - The Suspects
- Overview of three core areas of Mathematics: geometry
- 联合索引的左匹配原则
- Thoughts on data security (Reprint)
- ICLR 2022 spotlight | analog transformer: time series anomaly detection method based on correlation difference
- 模拟卷Leetcode【普通】1414. 和为 K 的最少斐波那契数字数目
- 模拟卷Leetcode【普通】1109. 航班预订统计
猜你喜欢
随机推荐
这些年用Keil遇到的坑
Cannot create PoolableConnectionFactory (Could not create connection to database server. 错误
Online and offline problems
在线问题与离线问题
10M25DCF484C8G(FPGA) AMY-6M-0002 BGA GPS模块
调用链监控Zipkin、sleuth搭建与整合
异常检测方法总结
Thoughts on data security (Reprint)
Postman核心功能解析-参数化和测试报告
Manage configuration using Nacos
【API接口工具】postman-界面使用介绍
黑猫带你学UFS协议第18篇:UFS如何配置逻辑单元(LU Management)
B - The Suspects
LeetCode 1200. 最小绝对差
【Postman】Monitors 监测API可定时周期运行
Overview of three core areas of Mathematics: geometry
模拟卷Leetcode【普通】1219. 黄金矿工
Web界面元素的测试
数学三大核心领域概述:几何
GTSAM中李群的运用









