当前位置:网站首页>LeetCode 6138. 最长理想子序列 动态规划
LeetCode 6138. 最长理想子序列 动态规划
2022-08-10 04:06:00 【超级码力奥】
给你一个由小写字母组成的字符串 s ,和一个整数 k 。如果满足下述条件,则可以将字符串 t 视作是 理想字符串 :
t 是字符串 s 的一个子序列。
t 中每两个 相邻 字母在字母表中位次的绝对差值小于或等于 k 。
返回 最长 理想字符串的长度。
字符串的子序列同样是一个字符串,并且子序列还满足:可以经由其他字符串删除某些字符(也可以不删除)但不改变剩余字符的顺序得到。
注意:字母表顺序不会循环。例如,‘a’ 和 ‘z’ 在字母表中位次的绝对差值是 25 ,而不是 1 。
示例 1:
输入:s = “acfgbd”, k = 2
输出:4
解释:最长理想字符串是 “acbd” 。该字符串长度为 4 ,所以返回 4 。
注意 “acfgbd” 不是理想字符串,因为 ‘c’ 和 ‘f’ 的字母表位次差值为 3 。
示例 2:
输入:s = “abcd”, k = 3
输出:4
解释:最长理想字符串是 “abcd” ,该字符串长度为 4 ,所以返回 4 。
提示:
1 <= s.length <= 105
0 <= k <= 25
s 由小写英文字母组成
来源:力扣(LeetCode)
链接:https://leetcode.cn/problems/longest-ideal-subsequence
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。
我当时做这道题的时候,没有考虑第二维的字母啊,因为f[i]的最后一个字母不一定是s[i]…
这里由于f[i]只从f[i-1]转移而来,所以第一维可以直接省略掉。
class Solution {
public:
int longestIdealString(string s, int k) {
/* f[i]表示从s[0] - s[i]最长理想字符串的长度 初始化:f[0] = 1 */
// // 下边的代码时不对的,因为没有记录最后一个字符
// int f[100010] = {0};
// f[0]= 1;
// for(int i = 1; i < s.size(); i ++)
// {
// for(int j = 0; j < i; j ++)
// {
// // 你怎么知道f[j]对应的最后一个字符就是s[j]呢。。
// if(abs(s[i] - ss[j]) <= k)
// {
// if(f[j] + 1 > f[i])
// {
// f[i] = f[j] + 1;
// ss[i] = s[i];
// }
// }
// }
// }
// return f[s.size() - 1];
vector<int> mp(26, 0);
for(auto c : s) {
int x = c - 'a', tx = 1;
// 防止越界,取max和min保护一下
for(int y = max(0, x - k); y < min(26, x + k + 1); y ++) {
tx = max(tx, mp[y] + 1);
}
mp[x] = max(mp[x], tx);
}
return *max_element(mp.begin(), mp.end());
}
};
# 这个Python是真的秀啊。
class Solution:
def longestIdealString(self, s: str, k: int) -> int:
f = [0] * 26
for c in s:
c = ord(c) - ord('a')
# 这里f只需要保护下界,防止出现负数,上界不用保护,越界了也不用求。
f[c] = 1 + max(f[max(c - k, 0): c + k + 1])
return max(f)
作者:endlesscheng
链接:https://leetcode.cn/problems/longest-ideal-subsequence/solution/by-endlesscheng-t7zf/
来源:力扣(LeetCode)
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
边栏推荐
猜你喜欢
goland里的异常处理
【mindspore产品】【8卡分布式训练】davinci_model : load task fail, return ret
mindspore gpu版本安装问题
shell三剑客之sed命令
C语言原码,反码,补码与大小端
虚假新闻检测论文阅读(七):A temporal ensembling based semi-supervised ConvNet for the detection of fake news
【网络迁移】Pytorch中的F.interpolate对应MindSpore哪个方法
[STL]map与set
mindspore安装过程中报错cannot find zlib
Jackson的ObjectMapper在项目中的主要运用
随机推荐
shell三剑客之sed命令
MySQL数据库初体验
ZZULIOJ:1017: 判断正整数位数
ZZULIOJ:1026: 字符类型判断
22牛客多校3 A.Ancestor(LCA + 枚举)
2022年电工(初级)国家题库及模拟考试
第九章、类的生命周期
ZZULIOJ:1016: 银行利率
郑州轻工业大学OJ合集(C语言)【正在整理】
【MindSpore功能】运行SSD-MobileNetV1 FPN样例报错
webrtc学习--webrtc源码获取
2022年R2移动式压力容器充装考试题库模拟考试平台操作
requests库
域名DNS解析工具ping/nslookup/dig/host
Jackson的ObjectMapper在项目中的主要运用
X书6.89版本shield-unidbg调用方式
TCP协议之《自动阻塞CORK控制》
[crit] 23856#0: *101796511 stat()
PID整定方法
【Mindspore】【310推理】导入mindir文件出错