This commit is contained in:
2026-07-23 16:56:50 +08:00
parent 124ad9afdf
commit 92784ffb0f
36 changed files with 2015 additions and 608 deletions
+54
View File
@@ -0,0 +1,54 @@
package top100liked
import (
"testing"
)
// https://leetcode.cn/problems/longest-common-subsequence/?envType=study-plan-v2&envId=top-100-liked
// 1143. 最长公共子序列
//
// 给定两个字符串 `text1` 和 `text2`,返回这两个字符串的最长 公共子序列 的长度。如果不存在 公共子序列 ,返回 `0` 。
// 一个字符串的 子序列 是指这样一个新的字符串:它是由原字符串在不改变字符的相对顺序的情况下删除某些字符(也可以不删除任何字符)后组成的新字符串。
// - 例如,`"ace"` 是 `"abcde"` 的子序列,但 `"aec"` 不是 `"abcde"` 的子序列。
// 两个字符串的 公共子序列 是这两个字符串所共同拥有的子序列。
// 示例 1
// 输入:text1 = "abcde", text2 = "ace"
// 输出:3
// 解释:最长公共子序列是 "ace" ,它的长度为 3 。
// 示例 2
// 输入:text1 = "abc", text2 = "abc"
// 输出:3
// 解释:最长公共子序列是 "abc" ,它的长度为 3 。
// 示例 3
// 输入:text1 = "abc", text2 = "def"
// 输出:0
// 解释:两个字符串没有公共子序列,返回 0 。
//
// 提示:
// - `1 <= text1.length, text2.length <= 1000`
// - `text1` 和 `text2` 仅由小写英文字符组成。
//
func longestCommonSubsequence(text1 string, text2 string) int {
}
func TestLongestCommonSubsequence(t *testing.T) {
cases := []struct {
name string
text1 string
text2 string
want int
}{
{"example1", "abcde", "ace", 3},
{"example2", "abc", "abc", 3},
{"example3", "abc", "def", 0},
}
for _, c := range cases {
t.Run(c.name, func(t *testing.T) {
got := longestCommonSubsequence(c.text1, c.text2)
if got != c.want {
t.Errorf("got %v, want %v", got, c.want)
}
})
}
}