计算字符串里的不含重复字符最长子串长度
无非就是在字符串中,找出没有字符串重复的最长的一段,用到最普遍的就是遍历法。
不多说,上代码。
1.给定字符串。
#include <stdio.h>
int main(int argc, char *argv[])
{
char *S = "helloworld";
若要求给定字符串,则可以用上面代码模版。
————————分割线————————
2.自主输入字符串。
#include <stdio.h>
#define MAX
char S[MAX] = {0};
int main(int argc, char *argv[])
{
printf("输入字符串:");
scanf("%s", S);
若要求自主输入字符串,则可以用此代码模版。
————————分割线————————
int i = 0, n; //用来遍历字符串
int l; //不重复字符子串长度
int first = 0; //指向子串第一个元素
while(S[i] != '\0')
{
for(n = first; n < i; n ++) //j从0开始遍历到i处
{
if(S[n] == S[i]) //如果遇到了相同内容,跳出遍历,判断位置
{
break;
}
}
if(n != i) //若内容相同,且位置不同表示找到重复字符
{
l = (i - first) > l
? (i - first)
: l;
first = n + 1; //下一次遍历从重复字符的下一个开始
}
i ++;
}
l = (i - first) > l
? (i - first)
: l;
printf("%d", l);
return 0;
}
————————分割线————————
运行结果:
输入:helloworld
输出:5