您的位置:首页 > 编程语言 > Go语言

LeetCode OJ 之 Longest Substring Without Repeating Characters 解题报告

2015-08-19 12:13 555 查看


题目: Longest Substring Without Repeating Characters

Given a string, find the length of the longest substring without repeating characters. For example, the longest substring without repeating letters for "abcabcbb" is "abc", which the length is 3. For "bbbbb" the longest substring is "b", with the length
of 1.

Solution:

class Solution {
public:
int lengthOfLongestSubstring(string str){
int result = 0;
int temp_res = 0;
int rec_arr[128];
memset(rec_arr, 0, sizeof(rec_arr));
for (int i = 0; i < str.length(); i++)
{
temp_res = 0;
memset(rec_arr, 0, sizeof(rec_arr));
for (int j = i; j < str.length(); j++)
{
if (str[j] >= 128 || str[j] < 0)
{
continue;
}
if (rec_arr[str[j]] != 0)
{
break;
}
else
{
rec_arr[str[j]]++;
temp_res++;
}
}
if (temp_res > result)
{
result = temp_res;
}
}
return result;
}
};
思路:
题目要求求给定字符串中无重复字符的最长子串的长度。

则从字符串的每一个位置依次向后开始遍历,与出现次数的数组成员比较,到出现相同字符时停止或者字符串结尾停止。在此之前如不相同,则将记录出现次数的数组相应成员进行自增操作。

收获:

1.在对数组进行初始化时,使用memset函数,应注意:memset的填充是以字节为单位的,如果你的数组元素不是单个字节的,填充成别的值就会出错只能填充0或者空值,可 自行验证这一结论。另外,在以后应该熟练使用memst函数对数组进行清零操作。

2.在字符串的处理中应熟练掌握Ascii码,在这道题中使用Ascii码更加简单
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息