给定一个字符串 s ,请你找出其中不含有重复字符的 最长子串 的长度。(试题来源力扣)
示例 1:
输入: s = "abcabcbb"
输出: 3
解释: 因为无重复字符的最长子串是 "abc",所以其长度为 3。
int equalNum(char a[],char b[],int k,int n){//判断测试数组中的元素是否有重复
int temp=0;
for(int i=0;i<=k;i++){
if(a[i]==b[n]){
temp++;
}
}
if(temp==0){
return 1;
}
return 2;
}
int lengthOfLongestSubstring(char * s){
if (s == NULL) {//数组为空直接返回
return 0;
}
int temp=0;
int temp_2=1;
char temp_1[50000]={0};//测试数组
int k=0;
while(s[temp]!='\0'){
temp++;
}
for(int i=0;i<temp-1;i++){
temp_1[k]=s[i];//将第一个元素填入数组
for(int j=i+1;j<=temp-1;j++){
if(equalNum(temp_1,s,k,j)==1){//后面的元素与数组中的元素不相等就填入数组
k++;
temp_1[k]=s[j];
}else{//一但与数组中的元素有重复数组清0
if(k+1>temp_2){//判断清0前数组中的字符串长度是否最长,如果是最长的就进行替换
temp_2=k+1;
}
k=0;
break;
}
if (j == temp - 1) {
if (k + 1 > temp_2) {
temp_2 = k + 1;
}
k = 0;
break;
}
}
}
return temp_2;//最后返回最长的值
}
int main() {
char str[] = "au";
printf("%d \n", lengthOfLongestSubstring(str));
return 0;
}版权声明:本文为weixin_49312527原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。