Hackerrank - Common Child Solution
A string is said to be a child of a another string if it can be formed by deleting 0 or more characters from the other string. Given two strings of equal length, what's the longest string that can be constructed such that it is a child of both?
ABDC have two children with maximum length 3,
ABD. They can be formed by eliminating either the
C from both strings. Note that we will not consider
ABCD as a common child because we can't rearrange characters and
Complete the commonChild function in the editor below. It should return the longest string which is a common child of the input strings.
commonChild has the following parameter(s):
- s1, s2: two equal length strings
There is one line with two space-separated strings, and .
- All characters are upper case in the range ascii[A-Z].
Print the length of the longest string , such that is a child of both and .
The longest string that can be formed by deleting zero or more characters from and is , whose length is 2.
Sample Input 1
Sample Output 1
and have no characters in common and hence the output is 0.
Sample Input 2
Sample Output 2
The longest string that can be formed between and while maintaining the order is .
Sample Input 3
Sample Output 3
is the longest child of the given strings.
Solution in Pypy3
def commonChild(s1, s2): m = [*(len(s2)+1) for _ in range(len(s1)+1)] for i,c in enumerate(s1,1): for j,d in enumerate(s2,1): if c == d: m[i][j] = m[i-1][j-1]+1 else: m[i][j] = max(m[i][j-1],m[i-1][j]) return m[-1][-1] print(commonChild(input(), input()))
Note: Time out error with python3. Only works with Pypy3