leetcode 无重复字符的最长子串 java实现
给定一个字符串,找出不含有重复字符的最长子串的长度。
示例:
给定 "abcabcbb"
,没有重复字符的最长子串是 "abc"
,那么长度就是3。
给定 "bbbbb"
,最长的子串就是 "b"
,长度是1。
给定 "pwwkew"
,最长子串是 "wke"
,长度是3。请注意答案必须是一个子串,"pwke"
是 子序列 而不是子串。
import java.util.LinkedList; class Solution { public int lengthOfLongestSubstring(String s) { int num=0;//记录最长子串长度 int current=0;//记录当前子串长度 char[] arr=s.toCharArray(); LinkedList<Character> temp=new LinkedList<>(); for (int i=0;i<arr.length ;i++ ) { if (!temp.contains(arr[i])) { temp.add(arr[i]); current=temp.size(); if (current>num) num=current; } else//如果新增字符与原子串中字符有重复的,删除原子串中重复字符及在它之前的字符,与新增字符组成新的子串 { temp.add(arr[i]); int first=temp.indexOf(arr[i]); for (int j=0;j<first ;j++ ) temp.remove(); temp.remove(); } } return num; }
结果
posted on 2018-05-16 12:39 yfyfyf947 阅读(4701) 评论(0) 编辑 收藏 举报