码迷,mamicode.com
首页 > 其他好文 > 详细

Leecode-无重复字符的最长子串

时间:2019-06-15 20:09:43      阅读:107      评论:0      收藏:0      [点我收藏+]

标签:void   nod   操作   比较   添加   nta   临时   链表集合   next   

import java.util.LinkedList;
import java.util.TreeSet;

class ListNode {
int val;
ListNode next;
ListNode(int x) { val = x; }
}
public class Solution {

public Solution() {}
// TODO Auto-generated constructor stub




public static int lengthOfLongestSubstring(String s) {

/*伪代码
* 初始化一个链表集合作为寻找最大不重复子串的临时存储位置
* 初始化最大长度count为0
* 遍历整个字符串
* 如果该字符在链表中不重复,加入集合
* 如果该字符在链表中已存在,首先比较当前链表长度与原coun最大值记录到count;然后删除链表链表中从开头到该重复字符(包括该字符)这段字符串;最后然后将该字符加入链表
* 遍历完成后,再比较链表长度与count,取大值为count
* 选择linkedList原因:对删除操作友好;保持插入顺序
*/



int re_count=0,curr_count=0;
LinkedList<Character> link=new LinkedList<>();
for(int i=0;i<s.length();i++){
char curr_ch = s.charAt(i);
if(link.contains(curr_ch)){

curr_count = link.size();
re_count = re_count>curr_count?re_count:curr_count;//找大数
link.subList(0, link.indexOf(curr_ch)+1).clear();//删除包含重复元素及之前的。
link.add(curr_ch);//添加该元素
}else{
link.add(curr_ch);
}
}
curr_count = link.size();
re_count = re_count>curr_count?re_count:curr_count;//找大数_
return re_count;
}


public static void main(String[] args) {
// TODO Auto-generated method stub

System.out.println(lengthOfLongestSubstring("dvdf"));

}

}

Leecode-无重复字符的最长子串

标签:void   nod   操作   比较   添加   nta   临时   链表集合   next   

原文地址:https://www.cnblogs.com/yexia/p/11028593.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!