2370. Longest Ideal Subsequence
https://leetcode.com/problems/longest-ideal-subsequence/description
给你一个字串s和一个数字k,找出一个子序列满足相邻的字符距离不相差超过k个,返回
最长是多长(note:a和z距离25而不是1)。
思路:
1.第一眼看觉得是动态规划,最暴力的方法就两个for循环,dp[i]找i前面的所有j,如
果相差不超过k就 dp[i] = max(dp[i], dp[j] + 1) 但 n=10^4 果不其然 TLE。
2.既然TLE了那就只能想办法减少循环做的事,实际上我们不用找前面j个dp,只要找
"前面某某字母结尾"的最长子序列长度就好,顶多做26次,这样时间复杂度就变O(n)了。
3.然后我循环是从 c-k 跑到 c+k+1 (对应距离左边k和右边k),恰好等于c的时候要另外
处理,直接放到循环里会因为顺序问题出错,解释起来满麻烦的直接看代码。
py code: