Question 4

Program to count common subsequence in two strings

Program to count common subsequence in two strings

Today we will learn program to count common subsequence in two strings. We will take two strings as an input, then we will 2-D ”cnt[][]” array that will store the count of common subsequence found. Now we will iterate each character of first string and each character of second string from of the string to its end , then if the characters matches we will check if the previous character of both string are same or not if they are same we will assign ”1 +cnt[i][j – 1] +cnt[i – 1][j]” to our 2D else we will assign ”cnt[i][j – 1] + cnt[i – 1][j] – cnt[i – 1][j – 1]” to our 2D array. As the iteration ends we will get our count.

Program to count common subsequence in two strings

17 comments on “Question 4”


  • Harsha

    Simple python code:
    A=input()
    B=input()
    K=[]
    L=[]
    c=0
    for i in range(len(A)):
    for j in range(i+1,len(A)+1):
    K.append(A[i:j])
    for i in range(len(B)):
    for j in range(i+1,len(B)+1):
    L.append(B[i:j])
    for i in K:
    if i in L:
    c+=1
    print(c)


  • Harsha

    Python code:
    A=input()
    B=input()
    K=[]
    L=[]
    c=0
    for i in range(len(A)):
    for j in range(i+1,len(A)+1):
    K.append(A[i:j])
    for i in range(len(B)):
    for j in range(i+1,len(B)+1):
    L.append(B[i:j])
    for i in K:
    if i in L:
    c+=1
    print(c)


  • Nageswar

    import itertools as it

    def sub_seq(aa):
    x, y = [], []
    for i in range(1, len(aa) + 1):
    x.append(list(it.combinations(aa, i)))
    for i in x:
    for j in i:
    y.append(list(j))
    return y

    a = sub_seq(input())
    b = sub_seq(input())
    c = 0
    for i in a:
    if i in b:
    c += 1
    print(c)


  • culbgaming12

    #include
    using namespace std;

    int count_seq(string s1, string s2)
    {
    int x = s1.length();
    int y = s2.length();

    int cnt[x + 1][y + 1];
    for (int i = 0; i < x + 1; i++)
    {
    for (int j = 0; j < y + 1; j++)
    {
    if (i == 0 || j == 0)
    {
    cnt[i][j] = 0;
    }
    }
    }

    for (int i = 1; i < x + 1; i++)
    {
    for (int j = 1; j > s1 >> s2;

    cout << "Number of subsequences are: " << count_seq(s1, s2) << endl;

    return 0;
    }