r problem that lends itself to a dynamic programming solution is finding the longest common substring in two strings. For example, in the words “raven” and “havoc”, the longest common substring is “av”. Let’s look first at the brute force solution to this problem. Given two strings, A and B, we can find the longest common substring by starting at the first character of A and comparing each character to the characters in B. When a nonmatch is found, move to the next character of A and start over with the first character of B, and so on. There is a better solution using a dynamic programming algorithm. The algorithm uses a two-dimensional array to store the results of comparisons of the characters in the same position in the two strings. Initially, each element of the array is set to 0. Each time a match is found in the same position of the two arrays, the element at the corresponding row and column of the array is incremented by 1, otherwise the element is set to 0. To reproduce the longest common substring, the second through the next to last rows of the array are examined and a column entry with a value greater than 0 corresponds to one character in the substring. If no common substring was found, all the elements of the array are 0. Write a complete program for finding a longest common substring:
r problem that lends itself to a dynamic
“raven” and “havoc”, the longest common substring is “av”.
Let’s look first at the brute force solution to this problem. Given two strings,
A and B, we can find the longest common substring by starting at the first
character of A and comparing each character to the characters in B. When a
nonmatch is found, move to the next character of A and start over with the
first character of B, and so on.
There is a better solution using a dynamic programming
algorithm uses a two-dimensional array to store the results of comparisons of
the characters in the same position in the two strings. Initially, each element
of the array is set to 0. Each time a match is found in the same position of the
two arrays, the element at the corresponding row and column of the array is
incremented by 1, otherwise the element is set to 0.
To reproduce the longest common substring, the second through the next
to last rows of the array are examined and a column entry with a value greater
than 0 corresponds to one character in the substring. If no common substring
was found, all the elements of the array are 0.
Write a complete program for finding a longest common substring:
Step by step
Solved in 4 steps with 3 images