Pracuję nad C#, aby znaleźć wszystkie wspólne podciągi między dwoma ciągami. Na przykład, jeśli wejście jest: S1 = „potrzeba asssitance z poczty elektronicznej” S2 = „email potrzebnej pomocy”Wszystkie wspólne substraty między dwoma ciągami
Wyjście powinno być- „potrzebują pomocy e-maila”
Poniższy kod zwraca najdłuższy wspólny podłańcuch, ale chcę, aby mój kod zwrócił wszystkie wspólne podciągi. Każda pomoc jest doceniana!
static void commonsubstrings()
{
input1 = "need asssitance with email";
input2 = "email assistance needed"
if (input2.Length > input1.Length)
{
swap = input1;
input1 = input2;
input2 = swap;
}
int k = 1;
String temp;
String longTemp = "";
for (int i = 0; (i <= input1.Length); i++)
{
if ((i == input1.Length))
{
if (longest != null)
{
k = longest.Length + 1;
}
else
{
k = 1;
}
temp = input1.Substring(1, input1.Length - 1);
if (temp.Equals(""))
{
break;
}
if (k <= temp.Length)
{
i = k - 1;
input1 = temp;
if ((longest != null) && (longest.Length > longTemp.Length))
{
longTemp = longest;
}
}
}
holder1 = input1.Substring(0, k);
for (int j = 0; (j < input2.Length) && (j + k <= input2.Length); j++)
{
check1 = input2.Substring(j, k);
if (holder1.Equals(check1))
{
longest = holder1;
break;
}
}
k++;
}
Console.WriteLine(longest);
Console.ReadLine();
}
Czy wynik musi być w dowolnej kolejności? – nerdybeardo
Wszystkie typowe podciągi? Pojedyncze postacie? Czy "Ema" i "Emai" i "e-mail" to trzy różne pasujące fragmenty? – Amy
Czy chciałeś mieć zbyt wiele "s" znaków w input1? Czy to część pytania czy literówka? Czy próbujesz powiedzieć, że "pomoc" i "pomoc" są powszechne? –