题目:
解析:
代码:
javapublic int findSubstringInWraproundString(String ss) { int n = ss.length(); int[] dp = new int[n]; char[] s = ss.toCharArray(); for(int i = 0; i < n; i++) dp[i] = 1; for(int i = 1; i < n; i++){ if(s[i - 1] + 1 == s[i] || (s[i - 1] == 'z' && s[i] == 'a')) dp[i] += dp[i-1]; } //去重:把dp表中的字串重复的,只留最长的字串(hash表来建立映射关系) int[] hash = new int[26]; for(int i = 0; i < n; i++) hash[s[i]-'a'] = Math.max(hash[s[i]-'a'], dp[i]); //返回 int ret = 0; for(int x : hash) ret += x; return ret; }
动态规划子数组系列一>环绕字符串中唯一的子字符串
robin_suli2024-12-08 12:43
相关推荐
memcpy02 分钟前
LeetCode 1456. 定长子串中元音的最大数目【定长滑窗模板题】中等liuyao_xianhui6 分钟前
优选算法_模拟_提莫攻击_C++玛丽莲茼蒿20 分钟前
LeetCode hot100【相交链表】【简单】罗湖老棍子21 分钟前
They Are Everywhere(Codeforces- P701C)wen__xvn21 分钟前
力扣模拟题刷题bbbb36521 分钟前
算法复杂度与能耗关系的多变量分析研究的技术7不要秃头的小孩24 分钟前
力扣刷题——111.二叉树的最小深度wutang0ka36 分钟前
LeeCode HOT 100 104.二叉树的最大深度散峰而望40 分钟前
【基础算法】从入门到实战:递归型枚举与回溯剪枝,暴力搜索的初级优化指南setmoon21442 分钟前
C++代码规范化工具
