Find length of the longest consecutive path from a given starting character in Python

We are going to Find the length of the longest consecutive path from a given starting character using Python.Let me first explain to you the problem and then the solution.

Here we will be given a matrix of alphabets and we have to find the longest consecutive path from a given character, where the path is in alphabetical order. Now let’s discuss the solution.

We can find a solution using various functions. Below are the code and its output.

Length of the longest consecutive path:

n = [[0 for i in range(c)] for i in range(r)]
def adjacent_check(prev, curr):
    if (ord(curr) - ord(prev)) == 1:
        return True
    return False
r = 3
c = 3
def valid_check(i, j):
    if (i < 0 or j < 0 or i >= r or j >= c):
        return False
    return True
x = [0, 1, 1, -1, 1, 0, -1, -1]
y = [1, 0, 1, 1, -1, -1, 0, -1]
def getLenUtility(m, i, j, prev):
    if (valid_check(i, j) == False or adjacent_check(prev, m[i][j]) == False):
        return 0
    if (n[i][j] != -1):
        return dp[i][j]
    ans = 0
    for k in range(8):
        ans = max(ans, 1 + getLenUtility(m, i + x[k], j + y[k], m[i][j]))
    n[i][j] = ans
    return n[i][j]
def getLength(m, s):
    for i in range(r):
        for j in range(c):
            n[i][j] = -1
    ans = 0
    for i in range(r):
        for j in range(c):
            if (m[i][j] == s):
               for k in range(8):
                    ans = max(ans, 1 + getLenUtility(m, i + x[k], j + y[k], s));
    return ans
m = [['a', 'b', 'c'],
       ['d', 'f', 'f'],
       ['g', 'h', 'i']]
print(getLength(m, 'g'))
print(getLength(m, 'c'))
print(getLength(m,'e'))

Output:

3
1
0

CODE EXPLAINATION:

In the above code, we have used two functions namely adjacent_check and valid_check to check the range of index and the consecutive path. For ‘g’, the length of the longest consecutive path is 3 because ‘g’ follows ‘h’ and in turn, ‘h’ follows ‘i’. I hope you enjoyed it. THANKYOU.

Leave a Reply

Your email address will not be published. Required fields are marked *