给定一个字符串,请你找出其中不含有重复字符的 最长子串 的长度。
示例 1:
输入: “abcabcbb”
输出: 3
解释: 因为无重复字符的最长子串是 “abc”,所以其长度为 3。
示例 2:
输入: “bbbbb”
输出: 1
解释: 因为无重复字符的最长子串是 “b”,所以其长度为 1。
示例 3:
输入: “pwwkew”
输出: 3
解释: 因为无重复字符的最长子串是 “wke”,所以其长度为 3。
请注意,你的答案必须是 子串 的长度,“pwke” 是一个子序列,不是子串。
int lengthOfLongestSubstring(char* s) {
int a = 0;
int b = 0;
char *p = s; //定义双指针
char *p1 = p;
while (*p1 != '\0')
{
for (int i = 0; i < a; ++i) {
if(*(p+i) == *p1){
if(b < a)
b = a; //把未进入 if(*(p+i) == *p1)的次数赋值给b
a = 0; //如果含重复字符,a赋值为0,跳出循环
p++; // 指针向右移动一位
p1 = p; //两个指针指向同一位置
i = 0; //可省去
}
}
p1++;
a++;
}
return b>a?b:a; //返回较大的数,所得即所求
}