давайте посмотрим на эту проблему следующим образом ... это решение будет более оптимизированным и будет очень легко кодировать, но прочитав def, и вы ДОЛЖНЫ прочитать код , чтобы понять ...иначе это будет звучать просто сумасшедшим и сложным
ДУМАЙТЕ ОБ ЭТОМ
в ваших вопросах 2 приведенные вами примерные строки позволяют принять их как два набора, то есть {x, y, z}, из символов ...
И .. И ... ваша результирующая подстрока (набор) будет одна с символами , общими для обеих строк (наборов), и будет непрерывных записей и соответствующая подстрока (ser) будет равна единице с наибольшим числом записей
выше - это несколько свойств результата, но они будут работать только при использовании черезследующий алгоритм \ methodolgy
у нас есть два набора
a = {BAHYJIKLO}
b = {YTSHYJLOP}
Take
a U b = {-, -, H, Y, J, -, -, L, O}
b U a = {Y, -, -, H,Y, J, L, O, -}
это просто то, что я заменил символов, которые не подходили для объединения на "-"или любой специальный \ игнорируемый символ
, поэтому у нас есть две строки, из которых мы можем легко извлечь HYJ
, LO
, Y
, HYJLO
теперь сравнение строк / подстрок и различная обработка требуют времени, поэтому я записываю эти строки \ подстроки в текстовый файл с разделением пробелом или разными строками ... чтобы при чтении файла я получал всю строку вместовложенный цикл для поиска подстроки или управления временными переменными ....
после того, как у вас есть HYJ
, LO
, Y
, HYJLO
я не думаю, что найти нужную вам проблемурезультат ....
ПРИМЕЧАНИЕ: если вы начнете обрабатывать строки и подстроки с помощью временных переменных и вложенных циклов, сначала создайте подстроку, затем найдите ее ... затемэто будет очень дорогостоящее решение ... вы должны использовать такую подачу ...
char a[20], b[20]; //a[20] & b[30] are two strings
cin>>a; cin>>b;
int t=0;
open a temporary text file "file1" to write '(built-in-function works here)'
//a U b
for(int x=0; x<length(a); x++)
{
t=0;
for(int y=0; y<length(b); x++)
{ if( a[x] == b[y]) t=1; }
if(t == 1)
{
write 'a[x]' to the file1 '(built-in-function works here)'
t=0;
}
else
write a 'space' to the file1 '(built-in-function works here)'
}
//b U a
for(int x=0; x<length(a); x++)
{
t=0;
for(int y=0; y<length(b); x++)
{ if( b[x] == a[y]) t=1; }
if(t == 1)
{
write 'a[x]' to the file1 '(built-in-function works here)'
t=0;
}
else
write a 'space' to the file1 '(built-in-function works here)'
}
/*output in the file wil be like this
_____FILE1.txt_____
HYJ LO Y HYJLO
*/
//load all words in an array of stings from file '(built-in-function works here)'
char *words[]={"HYJ","LO","Y","HYJLO"};
int size=0,index=0;
for( int x=0; x<length(words); x++)
for( int y=0; x<length(words); y++)
{
if( x!=y && words[x] is a substring of words[y] ) // '(built-in-function works here)'
{
if( length(words[x] ) < size )
{
size = length(words[x];
index = x;
}
}
}
cout<< words[x];
//its the desired result.. its pretty old school bu i think you get the idea
}
я написал код для ... он работает, если вы хотите, дай мне письмо, я отправлю его вам ... кстати, мне нравится эта проблема, и сложность этого алгоритма составляет 3n (квадрат)