当前位置:网站首页>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 !
边栏推荐
- Understanding of processes and threads
- Web界面元素的测试
- Reading notes of effective managers
- 【API接口工具】postman-界面使用介绍
- Application du Groupe Li dans gtsam
- 浅谈专项测试之弱网络测试
- 技术分享 | 常见接口协议解析
- Detailed explanation of P problem, NP problem, NPC problem and NP hard problem
- Isam2 and incrementalfixedlagsmooth instructions in gtsam
- E - 食物链
猜你喜欢
CoordinatorLayout+NestedScrollView+RecyclerView 上拉底部显示不全
【Postman】Monitors 监测API可定时周期运行
Manhattan distance sum - print diamond
Application du Groupe Li dans gtsam
Postman核心功能解析-参数化和测试报告
(中)苹果有开源,但又怎样呢?
[postman] the monitors monitoring API can run periodically
【Postman】Collections配置运行过程
How to extract login cookies when JMeter performs interface testing
[C language] string left rotation
随机推荐
【eolink】PC客户端安装
数据库-当前读与快照读
「 WEB测试工程师 」岗位一面总结
MySQL之基础知识
模拟卷Leetcode【普通】1062. 最长重复子串
Function of activation function
全链路压测:构建三大模型
模拟卷Leetcode【普通】1143. 最长公共子序列
LeetCode 731. 我的日程安排表 II
MySQL之数据类型
Expose the serial fraudster Liu Qing in the currency circle, and default hundreds of millions of Cheng Laolai
曼哈顿距离与曼哈顿矩形-打印回字型矩阵
Coordinatorlayout+nestedscrollview+recyclerview pull up the bottom display is incomplete
JWT-JSON WEB TOKEN
Database - current read and snapshot read
PAT(乙级)2022年夏季考试
VINS-Mono: A Robust and Versatile Monocular Visual-Inertial State Estimator
黑猫带你学UFS协议第18篇:UFS如何配置逻辑单元(LU Management)
Manage configuration using Nacos
Amazon Engineer: eight important experiences I learned in my career