Longest substring without repeating characters解法

Longest Substring Without Repeating Characters

  Total Accepted: 20956  Total Submissions: 94227 My Submissions

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:
    int lengthOfLongestSubstring(string s) {
       int loc[256];
       memset(loc,-1,sizeof(loc));
       int max=0,index=-1;//到时候算长度就不用+1,并且可以准确记录重复所在
       for(int i=0;i<s.size();i++){
           if(loc[s[i]]>index)
            {    index=loc[s[i]];}//相当于哈希表,记录a,b,c等字符的索引值,index总是记录最后一次重复元素的索引,作为下一次查找的开始
           if((i-index)>max)
              {  max=i-index;}
            loc[s[i]]=i;//把索引作为value存起来
       }
       return max;
    }
};

这种解法的缺点是无法确定最长字符串,只能找到最大长度。

class Solution {
public:
    int lengthOfLongestSubstring(string s) {
       map<int,int> loc;
           //给map赋值
           for(int i=0;i<s.size();++i){
               loc[s[i]]=i;
               if()
           } 
           
    }
};


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值