数据结构(五十九)
学习数据结构与算法过程中的心得体会以及知识点的整理,方便我自己查找,也希望可以和大家一起交流。
—— 最长不含重复字符的子字符串 ——
1.题目描述
请从字符串中找出一个最长的不包含重复字符的子字符串,计算该最长子字符串的长度。
示例 :
输入:
"abcabcbb"
输出:
3
解释:
因为无重复字符的最长子串是 “abc”,所以其长度为 3。
输入:
"bbbbb"
输出:
1
解释:
因为无重复字符的最长子串是 “b”,所以其长度为 1。
输入:
"pwwkew"
输出:
3
解释:
因为无重复字符的最长子串是 “wke”,所以其长度为 3。
请注意,你的答案必须是 子串 的长度,“pwke” 是一个子序列,不是子串。
2.代码
c
int lengthOfLongestSubstring(char* s){
int len = strlen(s),max = 0,temp = 0;
if(len == 0)
return 0;
if(len == 1)
return 1;
int hash[128];
for (int i = 0;i < 128;i++)
hash[i] = -1;
for (int j = 0;j < len;j++){
int i = hash[s[j]];
hash[s[j]] = j;
if(temp < j - i)
temp = temp + 1;
else
temp = j - i;
if(max <= temp)
max = temp;
}
return max;
}