C# 字符串相似度算法
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
namespace 字符串相似度
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
******* void button1_Click(object sender, EventArgs e)
{
String str1 = textBox1.Text;
String str2 = textBox2.Text;
label3.Text = get_semblance_By_2words(str1, str2);
}
public static string get_semblance_By_2words(string word1, string word2)
{
int re = 0;
int maxLength;
int i, l;
List<string> tb1 = new List<string>();
List<string> tb2 = new List<string>();
i = 0;
l = 1;
maxLength = word1.Length;
if (word1.Length < word2.Length)
maxLength = word2.Length;
while (l <= word1.Length)
{
while (i < word1.Length - 1)
{
if (i + l > word1.Length)
break;
tb1.Add(word1.Substring(i, l));
i++;
}
i = 0;
l++;
}
i = 0;
l = 1;
while (l <= word2.Length)
{
while (i < word2.Length - 1)
{
if (i + l > word2.Length)
break;
tb2.Add(word2.Substring(i, l));
i++;
}
i = 0;
l++;
}
foreach (string subStr in tb1)
{
int tempRe = 0;
if (tb2.Contains(subStr))
{
tempRe = subStr.Length * 100 / maxLength;
if (tempRe > re)
re = tempRe;
if (tempRe == 100)
break;
}
}
return re.ToString() + "%";
}
}
}