• 博客园logo
  • 会员
  • 众包
  • 新闻
  • 博问
  • 闪存
  • 赞助商
  • HarmonyOS
  • Chat2DB
    • 搜索
      所有博客
    • 搜索
      当前博客
  • 写随笔 我的博客 短消息 简洁模式
    用户头像
    我的博客 我的园子 账号设置 会员中心 简洁模式 ... 退出登录
    注册 登录
THE WAY I AM
博客园    首页    新随笔    联系   管理    订阅  订阅
3. Longest Substring Without Repeating Characters无重复字符的最长子串

网址:https://leetcode.com/problems/longest-substring-without-repeating-characters/

显然采用sliding window滑动窗口法,辅助以哈希表,判断字符是否已使用

  • 不断扩充 j,直到 s[j] 已经使用
  • 此时,把 i 移动到 j 之前的 s[j] 字符前面,继续循环
  • class Solution {
    public:
        int lengthOfLongestSubstring(string s)
        {
            int i = 0, j;
            int ans = 0;
            map<char, int> mp;
            for(j = 0; j<s.size(); j++)
            {
                if(mp.find(s[j]) == mp.end() || mp[s[j]] == 0)
                {
                    mp[s[j]] = 1;
                }
                else
                {
                    ans = max(ans,(j-i));
                    while(s[i] != s[j])
                    {
                        mp[s[i]] = 0;
                        i++;
                    }
                    i++;
                }
            }
            ans = max(ans,(j-i));
            return ans;
        }
    };

     

 

posted on 2019-04-04 21:14  549  阅读(98)  评论(0)    收藏  举报
刷新页面返回顶部
博客园  ©  2004-2025
浙公网安备 33010602011771号 浙ICP备2021040463号-3