无重复的最长字串
给定一个字符串,请你找出其中不含有重复字符的 最长子串 的长度。
示例
输入: s = "abcabcbb"
输出: 3
解释: 因为无重复字符的最长子串是 "abc",所以其长度为 3。
解题分析
暴力枚举法。
外循环遍历输入字符串,内循环查找最长子串,设定变量保存子串长度
代码展示
class Solution {
public:
int lengthOfLongestSubstring(string s) {
string s1 = "";
unsigned int tmp = 0;
for (unsigned int i = 0; i<s.size(); i++)
{
s1 = s1 + s[i];
for (unsigned int j = i+1; j < s.size(); j++)
{
if (s1.find(s[j]) == -1)
s1 = s1 + s[j];
else
break;
}
if (tmp == 0)
tmp = s1.size();
else
tmp = tmp > s1.size() ? tmp : s1.size();
s1.clear();
}
return tmp;
}
};
心得
-
string 拼接 char
string 拼接 char 不能用 string.append() 函数,可以直接用 string + char
-
string.find() 函数用法
/* string.find() 函数用法 1. find(str, pos) 从 pos 位置开始查找 str, 如果找到则返回该字符串首次出现的下标 如果找不到则返回 -1 string::npos; 2. find(char, pos) 从 pos 位置开始查找 char, 如果找到则返回该字符串首次出现的下标 如果找不到则返回 -1 string::npos; */
缺点
执行用时较长
内存消耗较大
未分析内存