Longest Substring Without Repeating Characters
来源:互联网 发布:网络维修电脑招聘 编辑:程序博客网 时间:2024/06/05 14:39
问题描述:
Given a string, find the length of the longest substring without repeating characters.
Examples:
Given "abcabcbb"
, the answer is "abc"
, which the length is 3.
Given "bbbbb"
, the answer is "b"
, with the length of 1.
Given "pwwkew"
, the answer is "wke"
, with the length of 3. Note that the answer must be asubstring, "pwke"
is a subsequence and not a substring.
解决思路:
基于归纳法解决
1. 假设字符串为 str ,在某一时刻,指针 i 指向无重复字符子串的首位,指针 j 指向新的字符,即str[ i ... j-1 ] 中的字符都是无重复的,下一步判断 str[ j ] 是否在str[ i ... j-1 ] 中重复;
2. 此时从 i 到 i-1 开始扫描,若没有找到和 str[ j ] 相同的字符,那么当前串长度 len 加 1 且 j 加1,继续从 j 处开始向后扫描,回到步骤 1;
3. 若在位置 k 处 str[ k ] == str[ j ],那么可以判定新的最长串已经确定,判断 len和已找到的最大串长度 max 的关系并更新 max ;
4. 因为 str[ i ... j-1 ] 中的字符都是无重复的, 且str[ j ] == str[ k ],所以 str[ j ] 不会再和 str[k+1, ..., j-1] 中的字符重复,所以新的最长无重复子串变为 str[ k+1,...,j ],即下一步 i 从 k + 1 处开始查找,同时 len = j - k,且 j = j + 1;
完整代码:
#include <iostream>
#include <cstdio>
using namespace std;
class Solution {
public:
int lengthOfLongestSubstring(string s) {
int len = 1;
int max = -1;
int j = 1;
int k;
if(s.length() == 0)return 0;
if(s.length() == 1)return 1;
int i = 0;
while(j < s.length()){
while((k = repeat(s,i,j)) == -1){
len++;
j++;
if(j == s.length())break;
}
if(len > max) max = len;
len = len - (k-i+1) + 1;
i = k+1;
j++;
}
return max;
}
private:
int repeat(string s,int i, int j){
while(i < j)
if(s[j] == s[i]) return i;
else i++;
return -1;
}
};
void main(){
char str[100];
gets(str);
Solution s;
cout << s.lengthOfLongestSubstring(str) << endl;
}
- Longest Substring Without Repeating Characters
- Longest Substring Without Repeating Characters
- Longest Substring Without Repeating Characters
- Longest Substring Without Repeating Characters
- Longest Substring Without Repeating Characters
- Longest Substring Without Repeating Characters
- Longest Substring Without Repeating Characters
- Longest Substring Without Repeating Characters
- Longest Substring Without Repeating Characters
- Longest Substring Without Repeating Characters
- Longest Substring Without Repeating Characters
- Longest Substring Without Repeating Characters
- Longest Substring Without Repeating Characters
- Longest Substring Without Repeating Characters
- Longest Substring Without Repeating Characters
- Longest Substring Without Repeating Characters
- Longest Substring Without Repeating Characters
- Longest Substring Without Repeating Characters
- mybaits的映射器和管理
- NUC1076 LCD-Display【打印图案】
- python学习之路八--类(class)
- 文章标题
- 垃圾收集器参数总结
- Longest Substring Without Repeating Characters
- javaOO知识点梳理1
- JDBC
- storm-[6]-Trident API
- mybaits中常用表标签详解
- C/C++编程教训----数据结构的类型别名和memset
- SAP HANA XS ODATA使用参数展示具体数据
- 4.4 WINDOWS SERVER 2008
- 欢迎使用CSDN-markdown编辑器