网站增加关键字,医疗方面的网站建设,网站流量分析方法,俄罗斯最新消息今天写在前面 最近想复习一下数据结构与算法相关的内容#xff0c;找一些题来做一做。如有更好思路#xff0c;欢迎指正。 目录 写在前面一、场景描述二、具体步骤1.环境说明2.代码 写在后面 一、场景描述 给定一个字符串#xff0c;请你找出其中不含有重复字符的 最长子串 找一些题来做一做。如有更好思路欢迎指正。 目录 写在前面一、场景描述二、具体步骤1.环境说明2.代码 写在后面 一、场景描述 给定一个字符串请你找出其中不含有重复字符的 最长子串 子序列 的长度。
示例1:
输入: abcabcbb
输出: 3
解释: 因为无重复字符的最长子串是 abc所以其长度为 3。示例2:
输入: bbbbb
输出: 1
解释: 因为无重复字符的最长子串是 b所以其长度为 1。示例3
输入: pwwkew
输出: 3
解释: 因为无重复字符的最长子串是 wke所以其长度为 3。提示请注意你的答案必须是 子串 的长度pwke 是一个子序列不是子串。二、具体步骤
1.环境说明
名称说明IntelliJ IDEA2019.2
2.代码
以下为Java版本实现
public class Lc3_lengthOfLongestSubstring {public static void main(String[] args) {String s abcabcbb;
// String s bbbbb;
// String s pwwkew;System.out.println(lengthOfLongestSubstring(s));}/**** 思路* 返回值是int定义默认值max设置为0** 将字符串转转化为字符数组借助于StringBuilder.indexOf(String str, int fromIndex)判断是否有重复字符* 如果有重复的字符则从重复字符的下一位开始计算。不管有没有都需要添加到builder中* 每循环一次比较 builder.length() - fromIndex重复时用于记录下一位 的值与 max的大小** 说明builder.length() - fromIndex就是本次循环不重复的字符串的长度*** 定义 maxfromIndexbuilder* for循环字符串s** int index builder.indexOf(ch , fromIndex) -1* index ! -1, fromIndex index 1;* builder.append(ch)** int len builder.length() - fromIndex;* 判断 len max max len** 最后返回 max** param s* return*/private static int lengthOfLongestSubstring(String s) {int max 0, fromIndex 0;StringBuilder builder new StringBuilder(s.length());for (char ch : s.toCharArray()) {// 找到重复位置切记从开始位置开始int index builder.indexOf(ch , fromIndex);if (index ! -1) {fromIndex index 1;}builder.append(ch);int len builder.length() - fromIndex;if (len max) {max len;}}return max;}
} 写在后面 如果本文内容对您有价值或者有启发的话欢迎点赞、关注、评论和转发。您的反馈和陪伴将促进我们共同进步和成长。