2017-02-23 30 views
0

У меня есть 2 строки, назовем сначала одну базовую строку, а другую в качестве входной строки. Я работаю над созданием алгоритма, чтобы узнать, сколько символов базовой строки падает в их порядке внутри входной строки. Это означает, что не все символы из базовой строки могут встречаться во входной строке, но независимо от количества символов, должны быть в порядке (поскольку они присутствовали в базовой строке) Нам нужно выяснить процент соответствия базовой строки внутри строка вводаНабор символов в том же порядке в 2 строках

Пример:

base string: abcd 
input string: *a*b*c*d* 
output: 100% 

base string: abcd 
input string: *b*c*d* 
output: 75% 

base string: abcd 
input string: *a*c*d* 
output: 75% 

base string: abcd 
input string: *a*c*b*c*d* 
output: 75% (*a*c*d* or *b*c*d*) 

base string: abcd 
input string: *b*a*d*b*c*d* 
output: 100% (*a*b*c*d* is found) 
+1

В четвертом примере ('* a * c * b * c * d *') не присутствует 'abcd', чтобы у вас было 100% -ное совпадение? Кроме того, что вы пробовали до сих пор? –

+0

@ SelçukCihan abcd есть, если вы игнорируете c в середине a и b. Его можно рассматривать как '(* a * b * c * d *)' –

+0

Какова будет максимальная длина базовой строки? – fjardon

ответ

0

После того, как больше думать об этом, это типичная проблема ЛВП. Процентное соотношение может быть определено отношением длин LCS и строки ввода/базовой строки.

Что касается реализации, я бы использовал алгоритм Хиршберга.

Смежные вопросы