1. 描述
  2. 给定两个字符串str1和str2,输出两个字符串的最长公共子串
  3. 题目保证str1和str2的最长公共子串存在且唯一。
  4. 数据范围: 1 \le |str1|,|str2| \le 50001≤∣str1∣,∣str2∣≤5000
  5. 要求: 空间复杂度 O(n^2)O(n
  6. 2
  7. ),时间复杂度 O(n^2)O(n
  8. 2
  9. )
  10. 示例1
  11. 输入:
  12. "1AB2345CD","12345EF"
  13. 复制
  14. 返回值:
  15. "2345" alt

这个题目使用滑窗的思路 就是 以最长的 str1字符串为操作主题,然后设置左指针,当前选取的字符如果在这个st2中则 i顺延一位, left做指针不变,就可以。

    def LCS(self , str1: str, str2: str) -> str:
        res=""
        left=0
        for i in range(len(str1)+1):
            if str1[i-left:i] in str2:
                res=str1[i-left:i]
                left+=1
        return res