php网站开发的成功经历网上申请店铺开网店的流程
2026/3/18 10:22:26 网站建设 项目流程
php网站开发的成功经历,网上申请店铺开网店的流程,智联招聘企业登录入口,房地产怎么做网站推广文章目录摘要描述题解答案题解代码分析核心逻辑拆解什么叫“连续环绕”#xff1f;currentLen 在干嘛#xff1f;为什么 dp[index] max(dp[index], currentLen)#xff1f;示例测试及结果示例 1示例 2示例 3时间复杂度空间复杂度总结摘要 这道题第一眼看很容易被“子字符串…文章目录摘要描述题解答案题解代码分析核心逻辑拆解什么叫“连续环绕”currentLen 在干嘛为什么 dp[index] max(dp[index], currentLen)示例测试及结果示例 1示例 2示例 3时间复杂度空间复杂度总结摘要这道题第一眼看很容易被“子字符串”“不同”“无限环绕字符串”这些词劝退但实际上它是一个典型的“计数型动态规划”问题。真正的难点不在字符串本身而在于怎么避免重复统计怎么在O(n)的复杂度里算清楚所有可能的子串数量如果你平时做过日志切片、连续事件统计、或者字符串规则分析这道题的解法思路会非常熟悉。描述题目先定义了一个“看起来很吓人”的字符串base...zabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcd...它的特点其实只有一个字母是连续递增的z后面可以接a然后问题来了给你一个字符串s统计s中有多少个不同的非空子串同时也能在base中出现。注意几个关键信息子串是连续的要求不同不能重复算子串本身必须满足字母连续 可 z→a题解答案这道题如果暴力枚举子串子串数量是 O(n²)再去判定是否在base中直接爆炸真正高效的解法只有一句话记录每个字母作为结尾时最多能形成多长的“连续环绕子串”核心思想是只关心“以某个字符结尾”的最长合法子串同一个结尾字符短的子串一定包含在长的里面所以只统计“最长的那一条”就够了题解代码分析下面是完整 Swift 实现可以直接复制运行。classSolution{funcfindSubstringInWraproundString(_s:String)-Int{letcharsArray(s)ifchars.isEmpty{return0}// dp[i] 表示以字符 (a i) 结尾的最长连续子串长度vardp[Int](repeating:0,count:26)varcurrentLen0foriin0..chars.count{ifi0isContinuous(chars[i-1],chars[i]){currentLen1}else{currentLen1}letindexInt(chars[i].asciiValue!-Character(a).asciiValue!)dp[index]max(dp[index],currentLen)}returndp.reduce(0,)}privatefuncisContinuous(_a:Character,_b:Character)-Bool{letaVala.asciiValue!letbValb.asciiValue!returnbValaVal1||(azba)}}核心逻辑拆解什么叫“连续环绕”合法情况只有两种a - b - cz - abValaVal1||(azba)这就是base的全部规则没有其他花样。currentLen在干嘛currentLen表示当前这个字符能接在前一个字符后面形成多长的合法子串比如s zab扫描过程是z→ currentLen 1a→ 连续 → currentLen 2b→ 连续 → currentLen 3为什么dp[index] max(dp[index], currentLen)这是整道题最关键的一步。以b结尾b是合法ab是合法zab也是合法但如果你已经有了长度为 3 的zab长度为 1、2 的子串一定已经包含在里面再统计就会重复所以我们只保留最长的那个。示例测试及结果示例 1letsolutionSolution()print(solution.findSubstringInWraproundString(a))分析只有一个子串a合法输出1示例 2print(solution.findSubstringInWraproundString(cac))分析c合法a合法ca不合法不是连续ac不合法输出2示例 3print(solution.findSubstringInWraproundString(zab))分析z,a,bza,abzab一共 6 个。输出6时间复杂度整个算法只做了一次线性扫描O(n)n是字符串s的长度最大 10⁵完全没压力。空间复杂度只用了一个固定长度的数组dp[26]空间复杂度O(1)总结《环绕字符串中唯一的子字符串》是一道非常典型的“看起来复杂其实规律极强”的题。它真正想考你的不是字符串 API而是能不能把“不同子串”这个问题压缩成状态统计能不能意识到同一个结尾字符只需要记最长那条

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询