当前位置:网站首页>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 !
边栏推荐
- Construction and integration of Zipkin and sleuth for call chain monitoring
- Win10 cannot operate (delete, cut) files
- Manhattan distance and Manhattan rectangle - print back font matrix
- [C language] qsort function
- leaflet 地图
- Pat (Grade B) 2022 summer exam
- Cannot create PoolableConnectionFactory (Could not create connection to database server. 错误
- MySQL之数据类型
- 进程和线程的理解
- D - How Many Answers Are Wrong
猜你喜欢
Buuctf-[[gwctf 2019] I have a database (xiaoyute detailed explanation)
MySQL之基础知识
LeetCode 739. 每日温度
黑猫带你学eMMC协议第10篇:eMMC读写操作详解(read & write)
(中)苹果有开源,但又怎样呢?
G - Supermarket
【Tera Term】黑猫带你学TTL脚本——嵌入式开发中串口自动化神技能
What are the test sites for tunnel engineering?
Database - current read and snapshot read
Summary of anomaly detection methods
随机推荐
【无App Push 通用测试方案
[eolink] PC client installation
Sqlmap tutorial (III) practical skills II
[postman] dynamic variable (also known as mock function)
Linux regularly backs up MySQL database
【Postman】Collections-运行配置之导入数据文件
Summary of anomaly detection methods
曼哈顿距离与曼哈顿矩形-打印回字型矩阵
一文揭开,测试外包公司的真 相
【Postman】动态变量(也称Mock函数)
MySQL之数据类型
数学三大核心领域概述:几何
Embedded point test of app
php使用redis实现分布式锁
Manhattan distance sum - print diamond
Buuctf-[[gwctf 2019] I have a database (xiaoyute detailed explanation)
Application du Groupe Li dans gtsam
MFC关于长字符串unsigned char与CString转换及显示问题
把el-tree选中的数组转换为数组对象
[postman] the monitors monitoring API can run periodically