欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 文旅 > 旅游 > 力扣--LCR 167.招式拆解I

力扣--LCR 167.招式拆解I

2025/2/23 20:03:07 来源:https://blog.csdn.net/weixin_52297290/article/details/144885629  浏览:    关键词:力扣--LCR 167.招式拆解I

题目

某套连招动作记作序列 arr,其中 arr[i] 为第 i 个招式的名字。请返回 arr 中最多可以出连续不重复的多少个招式。

示例 1:

输入:arr = “dbascDdad”
输出:6
解释:因为连续且最长的招式序列是 “dbascD” 或 “bascDd”,所以其长度为 6。

示例 2:

输入:arr = “KKK”
输出:1
解释:因为无重复字符的最长子串是 “K”,所以其长度为 1。

示例 3:

输入:arr = “pwwkew”
输出:3
解释:因为连续且最长的招式序列是 “wke”,所以其长度为 3。
请注意区分 子串 与 子序列 的概念:你的答案必须是 连续招式 的长度,也就是 子串。而 “pwke” 是一个非连续的 子序列,不是 子串。

提示:

0 <= arr.length <= 40000
arr 由英文字母、数字、符号和空格组成。

代码

class Solution {
// public int lengthOfLongestSubstring(String s) {
// if(s == null || s.length() <= 0){
// return 0;
// }
// // 优化 => 单个变量
// Map<Character,Integer> map = new HashMap<>();
// int[] dp = new int[s.length()];
// dp[0] = 1;
// map.put(s.charAt(0), 0);
// int res = 1;
// for(int i = 1; i < s.length(); i++){
// if(!map.containsKey(s.charAt(i))){
// dp[i] = dp[i-1] + 1;
// }else{
// int k = map.get(s.charAt(i));
// dp[i] = i - k <= dp[i-1] ? i - k : dp[i-1] + 1;
// }
// res = Math.max(res, dp[i]);
// map.put(s.charAt(i), i);
// }

//     return res;
// }// 优化版本
public int lengthOfLongestSubstring(String s) {if(s == null || s.length() <= 0){return 0;}// 优化 => 单个变量Map<Character,Integer> map = new HashMap<>();//int[] dp = new int[s.length()];int a = 1;map.put(s.charAt(0), 0);int res = 1;for(int i = 1; i < s.length(); i++){if(!map.containsKey(s.charAt(i))){a = a + 1;// 就是没有刷新 a 之前,a表示dp[i-1]}else{int k = map.get(s.charAt(i));a = i - k <= a ? i - k : a + 1;}res = Math.max(res, a);map.put(s.charAt(i), i);}return res;// 时间On,空间On
}

}

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

热搜词