55 lines
1.7 KiB
Go
55 lines
1.7 KiB
Go
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)
|
||
}
|
||
})
|
||
}
|
||
}
|