本文主要是介绍leetcode03-Longest Substring Without Repeating Characters,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
题目
给定一个字符串 s ,请你找出其中不含有重复字符的 最长 子串的长度。
示例 1:
输入: s = “abcabcbb”
输出: 3
解释: 因为无重复字符的最长子串是 “abc”,所以其长度为 3。
分析
很直观的思路就是遍历字符串,如果子串中没有重复元素那么长度不停加1,同时我们应该记录不重复子串的开始坐标,不重复子串的开始坐标一定是刚刚出现的重复元素对应的坐标+1,同时一定要注意不重复子串的开始坐标不能比重复元素对应的坐标小(abba这种情况)
import java.util.Arrays;public class longestSubstringWithoutRepeatingCharacters {public static void main(String[] args) {System.out.println(getLong("abcabcbb"));}public static int getLong(String s) {int len = s.length();int[] arr = new int[256];Arrays.fill(arr,-1);int left = 0;int res = 0;for(int i = 0;i<len;i++) {if(s.charAt(i) != -1 && arr[s.charAt(i)] >= left) {left = arr[s.charAt(i)] + 1;}arr[s.charAt(i)] = i;int num = i - left + 1;if(res < num) {res = num;}}return res;}
}
这篇关于leetcode03-Longest Substring Without Repeating Characters的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!