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

题目:


解析:


代码:

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;
    }
相关推荐
土司大王5 小时前
LeetCode hot100——除了自身以外数组的乘积
数据结构·算法·leetcode
IvanCodes5 小时前
RAG 实战教程(三):向量数据库检索算法,KNN、IVF、HNSW 与 Faiss 实战
人工智能·算法·agent
阿无,5 小时前
布隆过滤器
java·算法·哈希算法
徒慕风流5 小时前
激光雷达回波信号滤波与时刻鉴别算法:原理、代码实现与仿真验证
python·算法·激光雷达
这料鬼有毒5 小时前
二刷hot100-70.爬楼梯
算法
.道阻且长.7 小时前
10.LeetCode算法习题讲解--滑动窗口--最大连续为一的个数
算法·leetcode·职场和发展
tudousisi2227 小时前
P3009 [USACO11JAN] Profits S 题解复盘
动态规划
tudousisi2227 小时前
P2800 又上锁妖塔 题解复盘
动态规划
学习中.........7 小时前
Karpathy nanoGPT 教程到底讲了什么
人工智能·算法·语言模型
城管不管7 小时前
重生——第十次面试之开源中国一面挂
java·linux·开发语言·算法·面试·职场和发展·开源