Find a palindromic string B such that given String A is a subsequense of B

Given a string A. Find a string B, where B is a palindrome and A is a subsequence of B.

A subsequence of a string is a string that can be derived from it by deleting some (not necessarily consecutive) characters without changing the order of the remaining characters. For example, “cotst” is a subsequence of “contest”.

A palindrome is a string that reads the same forward or backward.

Examples:

Input : A = "aba"
Output : B = aba
Explanation : "aba" is a subsequence of "aba" 
which is a palindrome.

Input : A = "ab"
Output : B = abba

Approach: Let reverse(s) be the reverse of a string s. Now, s + reverse(s) will always have s as a subsequence (as first half) and it is a palindrome.

Therefore, B = A + reverse(A).

Below is the implementation of the above approach:

filter_none

edit
close

play_arrow

link
brightness_4
code

# Python program to find a palindromic string B
# such that given String A is a subsequense of B
  
# Function to check if a string is palindrome
def checkPalindrome(s):
    # Reversing a string
    x = s[::-1]
    # check if reversed string is equal 
    # to given string
    if(x == s):
        return True
    else:
        return False
          
# Function to find a palindromic string B
# such that given String A is a subsequense of B
def findStringB(A):
      
    # Reversing the string A
    B = A[::-1]
      
    B = B + A
      
    # If the string A is already a palindrome
    # return A
    if(checkPalindrome(A)):
        return A
        
    # else return B    
    return B
  
# Driver Code
A ="ab"
print(findStringB(A))

chevron_right


Output:

baab


My Personal Notes arrow_drop_up