题目:
从字符串中“aecbcda”找出不重复的字符组成的顺序子串“aecbd”,用最优的时空复杂度。 答题说明:该题为手动判卷,答案只要写对即可,不用严格满足字符比对。
解答:
#include<stdio.h>
#include<string.h>
#include<malloc.h>
char* LongString(char* str,int length)
{
if(str==NULL||length==0)
return NULL;
char* temp=(char*)malloc(sizeof(char)*length);
temp[0]=str[0];
int i=1;
for(i;i<length;i++)
{
int j=0;
int len=strlen(temp);
char currentStr=str[i];
int flag=0;
for(j;j<len;j++)
{
if(temp[j]==currentStr)
{
flag=1;
break;
}
}
if(flag==0)
{
temp[len]=currentStr;
len++;
}
temp[len]='\0';
}
return temp;
}
int main(int argc, const char *argv[])
{
char *str="lkjrdfsd";
printf("%s\n",LongString(str,strlen(str)));
return 0;
}