Ich muss das längste Textfragment finden, das in beiden Zeichenfolgen vorhanden ist und die Nummer der Zeile, in der das Fragment für beide Zeichenfolgen beginnt. In diesem Fall speichere ich den Text in Book
Klasse, weil es für andere Dinge Sinn macht, die ich damit zu tun habe. Ich brauche eine Methode in meinem Hauptklasse, die wie folgt aussehen würde:Suche nach dem längsten Textfragment, das in beiden Strings existiert
static void FindLongestFragment(Book book1, Book book2, out string fragment, out int lineNumber1, out int lineNumber2)
Allerdings habe ich nicht von einem Algorithmus, dies zu tun denken kann. Hier ist, was mein Programm sieht so weit:
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;
}
}
Scheint, wie Hausaufgaben ... Sie sollten Ihre erwartete Ein- und Ausgabe als „längste Textfragment“ schreiben ist zu zweideutig. –
[Längste gemeinsame Teilzeichenfolge] (https://en.wikipedia.org/wiki/Longest_common_substring_problem)? Es gibt sogar Pseudo-Code, den Sie nur implementieren müssen ... –
@AdrianoRepetti Ja, das ist die Sache, nach der ich gesucht habe. – PoVa