leetcode3

26 篇文章 0 订阅
26 篇文章 0 订阅

给定一个字符串 s ,请你找出其中不含有重复字符的 最长子串 的长度。

class Solution {
public:
    int lengthOfLongestSubstring(string s) {
        int * p,*q;
        //p=s,q=s;
        for(int i=0;i<s.size();i++){
            for(int j=i+1;j<s.size();j++){
                if(s[j]==s[i])
                printf("j%d,%d\n",j,i);
            }
        }
         unordered_set<char> myset;
 
        int right = 0;
 
        int ans = 0;
 
        for (int left = 0; left < s.size(); left++) {
 
            while (right < s.size() && !myset.count(s[right])) {
 
                myset.insert(s[right]);
 
                right++;
 
            }
 
            if (myset.size() > ans) ans = myset.size();
 
            myset.erase(s[left]);
 
        }
 
        return ans;

        //return 1;
    }
};

第二版

class Solution {
public:
    int lengthOfLongestSubstring(string s) {
        int * p,*q;
        //p=s,q=s;
        for(int i=0;i<s.size();i++){
            for(int j=i+1;j<s.size();j++){
                //if(s[j]==s[i])
                //printf("j%d,%d\n",j,i);
            }
        }
         unordered_set<char> myset;
 
        int right = 0;
 
        int ans = 0;
 
        for (int left = 0; left < s.size(); left++) {
 
            while (right < s.size() && !myset.count(s[right])) {
 
                myset.insert(s[right]);
 
                right++;
 
            }
 
            if (myset.size() > ans) ans = myset.size();
            std::unordered_set<char>::iterator it;
            std::cout << "myset" << ": ";
            for ( it = myset.begin(); it != myset.end(); it++ )
                std::cout << *it << " ";
            std::cout << std::endl;
        
            myset.erase(s[left]);
 for ( it = myset.begin(); it != myset.end(); it++ )
                std::cout << *it << " ";
            std::cout << std::endl;
        }
 
        return ans;

        //return 1;
    }
};

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

lst0426

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值