每日算法-无重复字符的最长子串
2021/8/20 12:35:39
本文主要是介绍每日算法-无重复字符的最长子串,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
题目描述
给定一个字符串s
,请你找出其中不含有重复字符的 最长字串 的长度
示例1:
输入:s = "abcabcbb" 输出:3 解释:无重复字符的最长字串是"abc",所以长度为3。
示例2:
输入:s = "bbbbb" 输出:1 解释:无重复字符的最长字串是"b",长度为1。
示例3:
输入:s = "" 输出:0
解答详情
思路:先理解清楚字符串的子串和子数组的概念,子串是连续的,子数组可以不连续;该题本人根据ASCII码,利用字符的ASCII码记录上一个字符出现的位置,若遇到相同的字符,则更新统计子串长度的起始位置,并记录相应无重复字符子串的长度,获取其最大值。
class Solution { public int lengthOfLongestSubstring(String s) { int len = s.length();//字符串长度 if(len < 2) return len==1 ? 1 : 0; int[] preStrIdx = new int[128];//128位的ASCII码 //利用字符的ASCII码记录上一个字符出现的位置 for(int i = 0 ; i < 128 ; i++)preStrIdx[i] = -1;//初始化 int res = 0; int start = 0; for(int i = 0 ; i < len ; i++){ int idx = s.charAt(i);//字符对应的ASCII码 start = Math.max(start,preStrIdx[idx]+1);//记录开始的位置 res = Math.max(res,i-start+1); preStrIdx[idx] = i;//更新上一个字符的位置 } return res; } }
这篇关于每日算法-无重复字符的最长子串的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-06-26结对编程到底难不难?答案在这里
- 2024-06-19《2023版Java工程师》课程升级公告
- 2024-06-15matplotlib作图不显示3D图,怎么办?
- 2024-06-1503-Loki 日志监控
- 2024-06-1504-让LLM理解知识 -Prompt
- 2024-06-05做软件测试需要懂代码吗?
- 2024-06-0514-ShardingSphere的分布式主键实现
- 2024-06-03为什么以及如何要进行架构设计权衡?
- 2024-05-31全网首发第二弹!软考2024年5月《软件设计师》真题+解析+答案!(11-20题)
- 2024-05-31全网首发!软考2024年5月《软件设计师》真题+解析+答案!(21-30题)