tim_ryspekov

Алгоритм для поиска общих фрагментов в двух разных строках

Sep 25th, 2017
112
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.99 KB | None | 0 0
  1. #include <iostream>
  2. #include <string>
  3.  
  4. using namespace std;
  5.  
  6. void finds(string First_String, string Second_String, int Len_Of_Substr)  // Ищем все схожие подстроки строк First_String и
  7. {                                                                 // Second_String c длиной Len_Of_Substr и больше ее
  8.  if(First_String.length() < Second_String.length() )              // ____________________
  9.   swap(First_String , Second_String);                             // Если Длина первой строки меньше второй - меняем их
  10.  
  11.  Len_Of_Substr--;
  12.  int Len1 = First_String.length();  // Присваиваем Длину первой строки
  13.  while (Len_Of_Substr < Len1)       // Пока Длина подстроки меньше Длины первой строки
  14.  {
  15.      int j = 0;                     // Счетчик, показывающий позицию в первой строке
  16.      while(j + Len_Of_Substr < Len1)  //Пока Подстрока не дошла до конца первой строки
  17.   {
  18.             string Substr = "" ;         //Создаем пустую Подстроку
  19.    for(int k = j ; k <= j + Len_Of_Substr ; k++)  
  20.    {
  21.     Substr = Substr + First_String[k];      // Substr += First_String[k];
  22.       }
  23.       int Amount = Second_String.find(Substr);     //Создаем переменную, которая будет показывать количество
  24.                                                    //Подстрок данного экземпляра
  25.    if(Amount >= 0)                              //и если такая была найдена
  26.              cout << Substr << endl;                  //Выводим ее
  27.      
  28.    j++;   //Увеличиваем позицию
  29.   }
  30.   Len_Of_Substr++; //Увеличиваем длину подстроки
  31.  }
  32. }
  33.  
  34. int main()
  35. {
  36.  string c = "aaaaabcdefg";
  37.  string c2 = "abcde";
  38.  finds(c,c2, 3);
  39.  return 0;
  40. }
Add Comment
Please, Sign In to add comment