LeetCode随缘刷题之无重复字符的最长子串
欢迎评论区交流。
package leetcode.day_12_04;
/**
* 给定一个字符串 s ,请你找出其中不含有重复字符的最长子串的长度。
* <p>
* 示例1:
* <p>
* 输入: s = "abcabcbb"
* 输出: 3
* 解释: 因为无重复字符的最长子串是 "abc",所以其长度为 3。
* 示例 2:
* <p>
* 输入: s = "bbbbb"
* 输出: 1
* 解释: 因为无重复字符的最长子串是 "b",所以其长度为 1。
* 示例 3:
* <p>
* 输入: s = "pwwkew"
* 输出: 3
* 解释: 因为无重复字符的最长子串是wke,所以其长度为 3。
* 请注意,你的答案必须是 子串 的长度,"pwke"是一个子序列,不是子串。
* 示例 4:
* <p>
* 输入: s = ""
* 输出: 0
*
* @author soberw
* @Classname LengthOfLongestSubstring0003
* @Description
* @Date 2021-12-04 15:51
*/
public class LengthOfLongestSubstring0003 {
/**
* @param s 将要查找的字符串
* @description:
* @return: 最长子串的长度
* @author: soberw
* @time: 2021/12/4 16:30
*/
public int lengthOfLongestSubstring(String s) {
//转换为StringBuilder方便操作
StringBuilder ss = new StringBuilder(s);
//记录每次开始的位置
int index = 0;
//保存最大值
int max = 0;
while (index < ss.length()) {
StringBuilder str = new StringBuilder();
//存入一个元素作为基值
str.append(ss.charAt(index));
index++;
for (int i = index; i < ss.length(); i++) {
//不存在加入,存在就终止
if (str.indexOf(String.valueOf(ss.charAt(i))) < 0) {
str.append(ss.charAt(i));
} else {
break;
}
}
//保证max始终是最大的
max = Math.max(max, str.length());
}
return max;
}
public static void main(String[] args) {
LengthOfLongestSubstring0003 l = new LengthOfLongestSubstring0003();
System.out.println(l.lengthOfLongestSubstring("anviaj")); //5
System.out.println(l.lengthOfLongestSubstring("bbbbb")); //1
System.out.println(l.lengthOfLongestSubstring("")); //0
System.out.println(l.lengthOfLongestSubstring("abcabcbb")); //3
System.out.println(l.lengthOfLongestSubstring("pwwkew")); //3
}
}
运行结果:
分类:
java
, LeetCode随缘刷题
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本