题目:
解析:
代码:
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
相关推荐
科学实验家几秒前
动态规划2imuliuliang10 小时前
关于数据结构在算法设计中的核心作用解析72401_8949155311 小时前
GEO 搜索优化完整源码从零部署:环境配置、集群搭建全流程普通网友12 小时前
共识算法实现:从工作量证明到权益证明的演进ldmd28413 小时前
地图生成算法(噪声篇-Perlin,Simplex,Value noise)国科安芯14 小时前
FreeRTOS RISC-V 浮点上下文切换移植:在 IAR 工程中完整保存 FPU 寄存器小陈phd14 小时前
集成检索介绍小poop14 小时前
轮转数组:从暴力到最优,一题掌握算法复杂度分析樱桃读报僵尸15 小时前
说说 LLMRouter,Agent 执行过程中怎么动态的选择 LLM
