首页 > 其他 > 详细

给一个字符串,求重复出现且最长的子字符串

时间:2014-02-17 18:50:01      阅读:409      评论:0      收藏:0      [点我收藏+]

例如”ababc",要求返回"ab"。因为"ab”连续重复出现且最长。用C/C++语言写一个函数完成该算法

bubuko.com,布布扣
 1 void GetSub(char* str)
 2 
 3 {
 4 
 5 char *p,*q,*temp;
 6 
 7 p = str;
 8 
 9 q = p + 1;
10 
11 int len = 0;//记录连续重复子串的长度
12 
13 int max = 0;//记录连续重复子串的最大长度
14 
15 char data[100];//临时数组,用于保存最长重复子串
16 
17  
18 
19 while(*p != \0)
20 
21 {
22 
23 temp = p;
24 
25 while(*q != \0)
26 
27 {
28 
29 if(*q != *p)
30 
31     q++;
32 
33 else
34 
35 {
36 
37 len++;//长度自加
38 
39 p++;//指针后移
40 
41 q++;
42 
43 }
44 
45 }
46 
47 if(len > max)
48 
49 {
50 
51 i = 0;
52 
53 max = len;
54 
55 len = 0;
56 
57 while(temp != p)
58 
59 {
60 
61 data[i] = *temp;
62 
63 temp++;
64 
65 i++;
66 
67 }
68 
69 }
70 
71 p++;
72 
73 q = p + 1;
74 
75 }
76 
77 data[i] = \0;//字符数组的最后一个元素需要设置为‘\0‘
78 
79 }</span>
bubuko.com,布布扣

给一个字符串,求重复出现且最长的子字符串

原文:http://www.cnblogs.com/atong/p/3552461.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!