zoukankan      html  css  js  c++  java
  • LeetCode-Longest Substring Without Repeating Characters

    Given a string, find the length of the longest substring without repeating characters. For example, the longest substring without repeating letters for "abcabcbb" is "abc", which the length is 3. For "bbbbb" the longest substring is "b", with the length of 1.

    简单来说就是维护一个没有重复字符的窗口,确定起点后先向后拓展终点,直到重复再向后移动起点直到无重复。

    class Solution {
    public:
        bool check(int*a,int n){
            for(int i=0;i<n;i++){
                if(a[i]>1)return false;
            }
            return true;
        }
        int lengthOfLongestSubstring(string s) 
        {
            if(s.length()<=0)return 0;
            int* all=new int[26];
            for(int i=0;i<26;i++)all[i]=0;
            int maxLength=1;
            int start=0;
            int end=0;
            all[s[start]-'a']++;
            
            while(true)
            {
                if(check(all,26))
                {
                    if(end-start+1>maxLength)
                    {
                        maxLength=end-start+1;
                    }   
                    end++;
                    if(end>=s.length())break;
                    all[s[end]-'a']++;
                }
                else
                {
                    all[s[start]-'a']--;
                    start++;
                }
                
            }
            delete all;
            return maxLength;
        }
    };
    
    public class Solution {
      public int lengthOfLongestSubstring(String s) {
            // Note: The Solution object is instantiated only once and is reused by
            // each test case.
            if (s.length() == 0)
                return 0;
            boolean[] count = new boolean[256];
            Arrays.fill(count, false);
            int start = 0, end = 0;
            int maxLen = 0;
            boolean flag = true;
            count[(int) s.charAt(0)] = true;
            end++;
            while (true) {
                if (end < s.length()) {
                    if (count[(int) s.charAt(end)]) {
                        if (end - start > maxLen)
                            maxLen = end - start;
                        while (count[(int) s.charAt(end)]) {
                            count[(int) s.charAt(start)] = false;
                            start++;
                        }
                    } else {
                        count[(int) s.charAt(end)] = true;
                        end++;
                    }
                } else {
                    if (end - start > maxLen)
                        maxLen = end - start;
                    break;
                }
            }
            return maxLen;
        }
    }
    Java
  • 相关阅读:
    当tp5项目上传到服务器之后遇见的各种bug(不定期更新)
    解决LAMP下 服务器IP无法访问
    thinkphp5多图上传+同时删除本地文件
    from提交表单后 数据提交到后台 但不跳转页面 非ajax 用iframe
    window7 安装sass和compass
    开源操作系统课程设计
    Hadoop伪分布式搭建实验总结
    排序集合
    快排
    邻接矩阵
  • 原文地址:https://www.cnblogs.com/superzrx/p/3322051.html
Copyright © 2011-2022 走看看