最长不含重复字符的子字符串
2019-05-07 16:43
113 查看
题目描述
请从字符串中找出一个最长的不包含重复字符的子字符串,计算该最长子字符串的长度。
假设字符串中只包含从’a’到’z’的字符。
样例
Input:"abcabc" Output:3
解题思路
-
描述
本题目可使用双指针算法。
使用两个指针 i 和 j ,i 和 j 之间维护的是不包含重复字符的子字符串。
判断是否包含重复字符,可使用哈希表。
-
实现代码:
/* 包含头文件: #include <unordered_map> // STL中哈希表的具体实现 */ int longestSubstringWithoutDuplication(string s) { unordered_map<char,int> count; int res = 0; for(int i=0,j=0;j < s.size();j++) { if(++count[s[j]] > 1) // 表明当前字符重复 { while(count[s[i]] == 1) // 移动i指针使得i和j之间没有重复字符 { count[s[i]]--; i++; } count[s[i]]--; i++; } res = max(res,j-i+1); // 获取最长的字符串 } return res; }
相关文章推荐
- 求字符串最长不含重复字符的子串长度
- 定义一个栈的数据结构,实现min函数,要求push,pop,min时间复杂度是0(1);找出字符串中的最长子串,要求子串不含重复字符,时间复杂度是O(n);
- C++找出字符串中最长的不含重复字符的子串
- 定义一个栈的数据结构,实现min函数,要求push,pop,min时间复杂度是0(1);找出字符串中的最长子串,要求子串不含重复字符,时间复杂度是O(n);
- 最长不含重复字符的子字符串
- 从字符串中找出一个最长的不含重复字符的子字符串
- 求字符串中不含重复字符的最长子串的长度
- 求字符串中不含重复字符的最长子串的长度
- 在英文字符串中找第一个最长不含重复字符的子串高效实现(修改版)
- 字符串最长不含重复字符的子串长度
- 面试题:最长不含重复字符的子字符串
- 百度面试题 求字符串中不含重复字符的最长子串长度
- 求字符串中不含重复字符的最长子串
- 最长不含重复字符的字符串
- 【Java】面试题48:最长不含重复字符的子字符串
- 找到字符串的最长无重复字符子串
- 给定一个字符串,找到最长的子串的长度没有重复字符
- 字符串中最长无重复字符的子串
- 输入一行字符串,找出其中重复出现且最长的字符串,输出它及其首字符的位置
- 输出字符串中所有最长的无重复字符的子字符串