动态规划子数组系列一>环绕字符串中唯一的子字符串

题目:


解析:


代码:

java 复制代码
 public 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;
    }
相关推荐
h^hh6 分钟前
洛谷 P3405 [USACO16DEC] Cities and States S(详解)c++
开发语言·数据结构·c++·算法·哈希算法
玦尘、6 分钟前
位运算实用技巧与LeetCode实战
算法·leetcode·位操作
重生之我要成为代码大佬12 分钟前
Python天梯赛10分题-念数字、求整数段和、比较大小、计算阶乘和
开发语言·数据结构·python·算法
Best_Me0741 分钟前
【CVPR2024-工业异常检测】PromptAD:与只有正常样本的少样本异常检测的学习提示
人工智能·学习·算法·计算机视觉
HBryce241 小时前
缓存-算法
算法·缓存
eso19831 小时前
Spark MLlib使用流程简介
python·算法·spark-ml·推荐算法
夏末秋也凉1 小时前
力扣-回溯-93 复原IP地址
算法·leetcode
Erik_LinX1 小时前
算法日记27:完全背包(DFS->记忆化搜索->倒叙DP->顺序DP->空间优化)
算法·深度优先
AC使者1 小时前
D. C05.L08.贪心算法入门(一).课堂练习4.危险的实验(NHOI2015初中)
算法·贪心算法
-sky-11 小时前
2.21作业
开发语言·c++·算法