35 lines
2.6 KiB
C#
35 lines
2.6 KiB
C#
//C# program tests the LCSUBSTR (Longest Common Substring) subroutine.
|
|
using System;
|
|
namespace LongestCommonSubstring
|
|
{
|
|
class Program
|
|
{
|
|
static void Main(string[] args)
|
|
{
|
|
string a = args.Length >= 1 ? args[0] : ""; /*get two arguments (strings). */
|
|
string b = args.Length == 2 ? args[1] : "";
|
|
if (a == "") a = "thisisatest"; /*use this string for a default. */
|
|
if (b == "") b = "testing123testing"; /* " " " " " " */
|
|
Console.WriteLine("string A = {0}", a); /*echo string A to screen. */
|
|
Console.WriteLine("string B = {0}", b); /*echo string B to screen. */
|
|
Console.WriteLine("LCsubstr = {0}", LCsubstr(a, b)); /*tell Longest Common Substring. */
|
|
Console.ReadKey(true);
|
|
} /*stick a fork in it, we're done.*/
|
|
|
|
/*─────────────────────────────────LCSUBSTR subroutine─────────────────────────────────*/
|
|
public static string LCsubstr(string x, string y) /*Longest Common Substring. */
|
|
{
|
|
string output = "";
|
|
int lenx = x.Length; /*shortcut for using the X length*/
|
|
for (int j = 0; j < lenx; j++) /*step through start points in X.*/
|
|
{
|
|
for (int k = lenx - j; k > -1; k--) /*step through string lengths. */
|
|
{
|
|
string common = x.Substring(j, k); /*extract a common substring. */
|
|
if (y.IndexOf(common) > -1 && common.Length > output.Length) output = common; /*longest?*/
|
|
} /*k*/
|
|
} /*j*/
|
|
return output; /*$ is "" if no common string. */
|
|
}
|
|
}
|
|
}
|