守望初心

靡有不初,鲜克有终。。。

导航

[005] unique_sub_string

Posted on 2014-11-09 10:45  Reynold Liu  阅读(166)  评论(0编辑  收藏  举报

[Description] Given a string, find the largest unique substring.

e.g.  str[] = "asdfghjkkjhgf";

     sub[] = "asd";

[Thought] create an auxiliary space 'record[256]' to record the appearence of characters. O(n)

[Implementation] C code:

 1 #include<stdio.h>
 2 
 3 int uniqueSubStr(const char str[], char unique[])
 4 {
 5         int record[256]={0};
 6         int i,len=0;
 7         for(i=0;str[i]!='\0';i++)
 8         {
 9                 if(0==record[str[i]])
10                 {
11                         record[str[i]]=1;
12                         len++;
13                         unique[len-1]=str[i];
14                 }
15                 else
16                 {
17                         continue;
18                 }
19         }
20         unique[len]='\0';
21         return len;
22 }
23 
24 int main()
25 {
26         char str[]="asdfjlkdfghjc";
27         int size=sizeof(str);
28         char unique[size];
29         int i;
30 
31         printf("Initial string:\n");
32         for(i=0;str[i]!='\0';i++)
33         {
34                 printf("%c",str[i]);
35         }
36         printf("\nThe lagest length of unique substring is: %d\n", uniqueSubStr(str,unique));
37         printf("The unique substring is:\n");
38         for(i=0;unique[i]!='\0';i++)
39         {
40                 printf("%c",unique[i]);
41         }
42         printf("\n");
43         return 0;
44 }