我需要查找兩個字符串中存在的最長文本片段以及兩個字符串片段的起始行數。在這種情況下,我將文本存儲在Book
類中,因爲這對我需要處理的其他事情很有意義。我需要一種方法我的主類中,這將是這個樣子:查找兩個字符串中存在的最長文本片段
static void FindLongestFragment(Book book1, Book book2, out string fragment, out int lineNumber1, out int lineNumber2)
不過,我想不出一個算法來做到這一點的。這是我的計劃看起來是什麼至今:
class Book
{
static char[] Separators = new char[] { ' ', '.', ',', '!', ':', ';', '(', ')', '\t', '\n', '\'', '"', '"' };
public string Text { get; private set; }
public LineContainer Lines { get; private set; }
public string[] Words { get { return Text.Split(Separators); } }
public Book(string[] lines)
{
Text = "";
for (int i = 0; i < lines.Length; i++)
{
Text += lines[i] + Environment.NewLine;
}
Lines = new LineContainer(lines);
}
class LineContainer
{
private List<Line> Lines;
public int Count { get { return Lines.Count; } }
public LineContainer(string[] lines)
{
Lines = new List<Line>();
for (int i = 0; i < lines.Length; i++)
{
Lines.Add(new Line(lines[i], i));
}
}
public Line Get(int index)
{
return Lines[index];
}
}
class Line
{
static char[] Separators = new char[] { ' ', '.', ',', '!', ':', ';', '(', ')', '\t', '\n', '\'', '"', '"' };
public string Text { get; private set; }
public int Length { get { return Text.Length; } }
public int Number { get; private set; }
public string[] Words { get { return Text.Split(Separators); } }
public Line(string text, int number)
{
Text = text;
Number = number;
}
}
好像功課......你應該張貼您的預期輸入和輸出爲「最長文本片段」太模糊了。 –
[最長公共子串](https://en.wikipedia.org/wiki/Longest_common_substring_problem)?甚至有你需要實現的僞代碼... –
@AdrianoRepetti是的,這是我一直在尋找的東西。 – PoVa