查找两个字符串的最长公共子串(附源码)_AX
查找两个字符串a,b中的最长公共子串
【思路】遍历a的字符,每次取出一个字符与b进行匹配(遍历b),如匹配上,a,b同时后移一个字符,再循环遍历b进行匹配,直到匹配不上,把刚才匹配的公共字串与已知最长子串进行比较,如果它比最长子串还长,替换最长子串,如相等,也保存.
【缺陷】本来优化了一下,减少了些不必要的循环次数,结果发现如果没有公共子串就会出现数组越界问题,可以改一下判断条件,但整个结构就会感觉很乱就删除了,只剩了一句做为注释掉,大家可以自己优化一下.
【总结】本来思路很简单,但调试起来还是用了很多时间,主要是因为变量初始化放的位置不对.相对菜鸟而言,思路跟代码实现还是有段距离的.
【源码】
【思路】遍历a的字符,每次取出一个字符与b进行匹配(遍历b),如匹配上,a,b同时后移一个字符,再循环遍历b进行匹配,直到匹配不上,把刚才匹配的公共字串与已知最长子串进行比较,如果它比最长子串还长,替换最长子串,如相等,也保存.
【缺陷】本来优化了一下,减少了些不必要的循环次数,结果发现如果没有公共子串就会出现数组越界问题,可以改一下判断条件,但整个结构就会感觉很乱就删除了,只剩了一句做为注释掉,大家可以自己优化一下.
【总结】本来思路很简单,但调试起来还是用了很多时间,主要是因为变量初始化放的位置不对.相对菜鸟而言,思路跟代码实现还是有段距离的.
【源码】
1
using System;
2
using System.Collections;
3
namespace CompareString_AX
4
{
5
/// <summary>
6
/// Class1 的摘要说明。
7
/// </summary>
8
class Class1
9
{
10
/// <summary>
11
/// 应用程序的主入口点。
12
/// </summary>
13
[STAThread]
14
static void Main(string[] args)
15
{
16
string a="AX_skljfgfdeerterter";//12315aaa1aaaa1211213412222";
17
string b="AX_weesdfsdee1";//31222aaaa1aaa1113412222";
18
ArrayList AX=Compare(a,b);
19
foreach(string i in AX)
20
{
21
Console.WriteLine("最长的子串为:"+i);
22
}
23
Console.ReadLine();
24
}
25
public static ArrayList Compare(string a,string b)
26
{
27
ArrayList arr=new ArrayList();
28
arr.Add("");
29
//循环遍历字符串a
30
for(int i=0;i<a.Length;i++)
31
{
32
//在字符串b中查找从匹配上a[i]开始的子串
33
//优化循环次数(有点问题)for(int j=0;j<b.Length-arr[0].ToString().Length+1;j++)
34
for(int j=0;j<b.Length;j++)
35
{
36
int n=1;//计数器
37
string subTemp="";//保存匹配上的临时子串
38
char tempa=a[i];
39
char tempb=b[j];
40
//匹配上后,两字符串的字符同时后移一位,再进行匹配,直到匹配不上
41
while(tempa==tempb)
42
{
43
subTemp+=tempa;
44
if((i+n)<a.Length&&(j+n)<b.Length)
45
{
46
tempa=a[i+n];
47
tempb=b[j+n];
48
n++;
49
}
50
else
51
{
52
break;
53
}
54
}
55
//比较子串与临时子串的长度
56
if(subTemp.Length>arr[0].ToString().Length&&subTemp.Length!=0)
57
{
58
arr.Clear();
59
arr.Add(subTemp);
60
}
61
else if(subTemp.Length==arr[0].ToString().Length&&subTemp.Length!=0)
62
{
63
arr.Add(subTemp);
64
}
65
}
66
}
67
//设置返回值
68
if(arr[0].ToString().Length!=0)
69
{
70
return arr;
71
}
72
else
73
{
74
arr.Clear();
75
arr.Add("没有共同的子串!");
76
return arr;
77
}
78
}
79
}
80
}
81![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
2
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
3
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
4
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedBlockStart.gif)
5
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
6
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
7
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
8
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
9
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
10
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
11
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
12
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
13
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
14
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
15
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
16
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
17
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
18
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
19
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
20
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
21
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
22
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
23
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
24
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
25
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
26
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
27
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
28
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
29
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
30
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
31
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
32
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
33
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
34
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
35
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
36
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
37
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
38
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
39
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
40
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
41
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
42
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
43
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
44
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
45
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
46
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
47
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
48
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
49
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
50
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
51
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
52
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
53
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
54
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
55
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
56
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
57
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
58
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
59
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
60
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
61
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
62
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
63
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
64
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
65
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
66
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
67
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
68
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
69
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
70
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
71
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
72
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
73
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
74
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
75
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
76
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
77
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
78
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
79
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
80
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedBlockEnd.gif)
81
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
少帮主的斧头好久不饮血了!