zoukankan      html  css  js  c++  java
  • 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.

    注意:最后面的子串最长,在循环外也要更新一次最大长度。

    C++实现代码如下:

    #include<iostream>
    #include<string>
    using namespace std;
    
    class Solution
    {
    public:
        int lengthOfLongestSubstring(string s)
        {
            if(s.empty())
                return 0;
            if(s.length()==1)
                return 1;
            size_t i,j,k=0;
            //记录最大长度
            size_t maxLen=0;
            //记录最大长度开始的下标
            size_t index=0;
            for(i=1; i<s.length(); i++)
            {
                j=k;
                while(j<i)
                {
                    if(s[j]==s[i])
                    {
                        if(i-k>maxLen)
                        {
                            maxLen=i-k;
                            index=k;
                        }
                        k=j+1;
                        break;
                    }
                    else
                        j++;
                }
            }
            if(i-k>maxLen)
            {
                maxLen=i-k;
                index=k;
            }
            cout<<"index: "<<index<<endl;
            return maxLen;
        }
    };
    
    int main()
    {
        Solution s;
        string ss="wlrbbmqbhcdarzowkkyhiddqscdxrjmowfrxsjybldbefsarcbynecdyggxxpklorellnmpapqfwkhopkmco";
        cout<<s.lengthOfLongestSubstring(ss)<<endl;
    }
    #include<iostream>
    #include<string>
    using namespace std;
    
    class Solution
    {
    public:
        int lengthOfLongestSubstring(string s)
        {
            if(s.empty())
                return 0;
            int maxLen=1;
            int i,j,k;
            j=0;
            k=0;
            for(i=1; i<(int)s.size(); i++)
            {
                j=k;
                while(j<i)
                {
                    if(s[i]!=s[j])
                        j++;
                    else
                    {
                        if(i-k>maxLen)
                            maxLen=i-k;
                        k=j+1;
                        break;
                    }
                }
            }
            if(i-k>maxLen)
                maxLen=i-k;
            return maxLen;
        }
    };
    
    int main()
    {
        Solution s;
        string ss="wlrbbmqbhcdarzowkkyhiddqscdxrjmowfrxsjybldbefsarcbynecdyggxxpklorellnmpapqfwkhopkmco";
        cout<<s.lengthOfLongestSubstring(ss)<<endl;
    }
    

      

  • 相关阅读:
    备份服务器实战
    LAMP架构编译安装过程详解
    centos .7x service iptables save 错误解决方案
    Linux上安装jdk1.8和配置环境变量
    YUM源使用阿里镜像
    Linux增加swap分区的方法
    elasticsearch5.4集群超时
    职场PPT达人装酷的13条秘诀
    千古绝唱风月事,河山绘尽一人心
    前端集成解决方案
  • 原文地址:https://www.cnblogs.com/wuchanming/p/4105938.html
Copyright © 2011-2022 走看看