zoukankan      html  css  js  c++  java
  • 【leetcode】3. Longest Substring Without Repeating Characters

    题目描述:

    Given a string, find the length of the longest substring without repeating characters.

    解题思路:

    这个题我认为还是比较有难度的,解题的关键在于理解对于一串数字a[0],a[1],……a[m],……a[n],……;若a[m]=a[n],则这两个字符间可能出现的最大不重复字符列长度为n-m;所以我们可以用一个数组来记录起始位置与扫描位置间出现过的字符的数组array。若有重复,要做以下两步:1,计算pos-from,并与当前找到的最大值max作比较;2把起始位置移动到位于前面的重复字符的下一个位置(即如果第3个位置与第7个位置重复,则把from设为4),并且将前后两个from之间出现的字符在array中清空。以此类推,直至遍历完字符串。

    代码如下:

    public class Solution {
        //应该考虑到字符串中的值不只是a-z,所以数组的大小不应该只设成26
       public static int lengthOfLongestSubstring(String s) {
           if(s.length()==0||s.length()==1)
               return s.length();
           if(s.length()==2){
               if(s.charAt(0)==s.charAt(1))
                   return 1;
               else
                   return 2;
           }
           int max = -1;
           int[] array = new int[256];
           int from=0;
           char ch = s.charAt(0);
           array[ch]++;
           for(int i=1;i<s.length();i++){
               ch=s.charAt(i);
               if(array[ch]!=0){
                   int len = i-from;
                   if(max<len)
                       max=len;
                   for(int j=from;j<i;j++){
                       char  c = s.charAt(j);
                       if(c!=ch){
                           array[c]=0;
                       }
                       else{
                           from=j+1;
                           break;
                       }
                   } 
               }
               else{
                   array[ch]++;
               }
           }
           if(s.length()-from>max)
               max=s.length()-from;
           return max;
        }
    }
  • 相关阅读:
    如何实现parseFloat保留小数点后2位
    C#正则表达式整理备忘
    HRESULT:0x80070057 (E_INVALIDARG)的异常的解决方案
    c# using的几种用法
    QQ截图 有快捷键的,如Shift+S
    史上最深刻的黄段子
    文本框回车自动提交
    C#与ASP.NET中DateTime.Now函数详解
    ASP.NET页面生命周期
    .NET中HttpWebRequest详解
  • 原文地址:https://www.cnblogs.com/godlei/p/5561373.html
Copyright © 2011-2022 走看看