private void btnFind_Click(object sender, EventArgs e) { CountStr3 A = new CountStr3(); A.Str1 = txtStr1.Text; A.Str2 = txtStr2.Text; string result = string.Empty; txtCount.Text = A.Str3Count(A, ref result).ToString(); txtStr3.Text = result; }
public int Str3Count(CountStr3 A, ref string str) { int n = Str1.Length + 2; // количество строк int m = Str2.Length + 2; // количество столбцов char[,] mass = new char [n, m]; int a = 2; // начинаем с 2 строки, так как 0 нам не интересны (позиция старта) int b = 2; // начинаем с 2 строки, так как 0 нам не интересны (позиция старта) //Заполняем 1 столбец for (int j = 0; j < Str2.Length; j++) { mass[0, a] = Str2[j]; a++; } // заполняем 1 строку for (int i = 0; i < Str1.Length; i++) { mass[b, 0] = Str1[i]; b++; } // возвращаем исходные значения а и b для прогонки по массиву a = 2; b = 2; for (int i = b; i < n; i++) { for (int j = a; j < m; j++) { if (mass[0, j] == mass[i, 0] && mass[0, j] != 0 && mass[i, 0] != 0) { str += mass[0, j].ToString(); count++; // увеличиваем количество элементов подпоследовательности /* если находим одинаковые элементы, * дальше нет смысла смотреть * переходим на другую строку и столбец*/ b++; a++; break; } } } return(count); }