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


    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"));

    }

    }

  • 相关阅读:
    sqlhelper使用指南
    大三学长带我学习JAVA。作业1. 第1讲.Java.SE入门、JDK的下载与安装、第一个Java程序、Java程序的编译与执行 大三学长带我学习JAVA。作业1.
    pku1201 Intervals
    hdu 1364 king
    pku 3268 Silver Cow Party
    pku 3169 Layout
    hdu 2680 Choose the best route
    hdu 2983
    pku 1716 Integer Intervals
    pku 2387 Til the Cows Come Home
  • 原文地址:https://www.cnblogs.com/yexia/p/11028593.html
Copyright © 2020-2023  润新知