您的位置:首页 > 其它

[LeetCode]3. Longest Substring Without Repeating Characters

2016-10-01 23:20 399 查看
3. Longest Substring Without Repeating Characters
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 a substring,
"pwke"
is a subsequence and not a substring.题意:
给定一个字符串,找出最长的无重复的连续字串。就比如"pwwkew"的最长无重复连续字串是"wke"。

最易想到的方法就是字符串逐一开始查找,第一个字符串找到最长的字串,依次找出,取最大值即可。

由于有256个字符,故定义了个257长度的数组,足以存下所有字符。

思路
1)定义字符数组,并把256个的值都置为零。
2)逐个查找字符,如果未出现过,即把该下标对应的数组值置为一。若该下标值已经是一了,则返回,
3)重置全部数组元素元素为零,从下个下标开始继续查找不重复字串。
4)返回最大字串长度即可。

#define CHARACTERS 257

int lengthOfLongestSubstring(char* s)
{
if ( !s )
{
return 0;
}

int character[CHARACTERS] = { 0 };
int len = strlen(s);

int cnt  = 0;
int size = 0;
int maxLen = 0;
int index = 0;
for ( index = 0; index < len; index++ )
{
size = 0;
for ( cnt = 0; cnt < CHARACTERS; cnt++ )
{
character[cnt] = 0;
}

for ( cnt = index; cnt < len; cnt++ )
{
/* pwwkew */
int value = *(s + cnt);
if ( character[value] == 0 )
{
size += 1;
character[value] = 1;
}
else
{
break;
}
}

if ( size > maxLen )
{
maxLen = size;
}
}

return maxLen;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  Code Leet