Given a string str. The string may contain lower-case letters, special characters, digits or even white-spaces. The task is to check, whether only the letters present in the string are forming a Palindromic combination or not without using any extra space.
Note: It is not allowed to use extra space to solve this problem. Also, the letters present in the string are in lower-case and the string may contain special characters, digits or even white-spaces along with lowercase letters.
Input : str = “m a 343 la y a l am”
Output : YES
The characters in the string form the sequence “malayalam”, which is a palindrome.
Input : str = “malayalam”
Output : YES
- Create two utility functions to get the first and last position of characters present in the string.
- Start traversing the string, and keep finding the position of first and last characters everytime.
- If the first and last characters are same for every iteration and the string is traversed completely then print YES otherwise print NO.
Below is the implementation of above approach:
# Python 3 program to check if the characters
# in the given string forms a Palindrome in
# O(1) extra space
# Utilty function to get the position of
# first character in the string
def firstPos(str, start, end):
firstChar = -1
# Get the position of first character
# in the string
for i in range(start, end + 1):
if (str[i] >= ‘a’ and str[i] <= 'z') : firstChar = i break return firstChar # Utilty function to get the position of # last character in the string def lastPos(str, start, end): lastChar = -1 # Get the position of last character # in the string for i in range(start, end - 1, -1) : if (str[i] >= ‘a’ and str[i] <= 'z') : lastChar = i break return lastChar # Function to check if the characters in # the given string forms a Palindrome in # O(1) extra space def isPalindrome(str): firstChar = 0 lastChar = len(str) - 1 ch = True for i in range(len(str)) : firstChar = firstPos(str, firstChar, lastChar); lastChar = lastPos(str, lastChar, firstChar); # break, when all letters are checked if (lastChar < 0 or firstChar < 0): break if (str[firstChar] == str[lastChar]): firstChar += 1 lastChar -= 1 continue # if mismatch found, break the loop ch = False break return (ch) # Driver code if __name__ == "__main__": str = "m a 343 la y a l am" if (isPalindrome(str)): print("YES") else: print("NO") # This code is contributed by ita_c [tabby title="C#"]
- Check if characters of a given string can be rearranged to form a palindrome
- To check a number is palindrome or not without using any extra space
- Check if a string can be rearranged to form special palindrome
- Check if characters of one string can be swapped to form other
- Rearrange characters to form palindrome if possible
- Length of longest palindrome list in a linked list using O(1) extra space
- Remove duplicates from a string in O(1) extra space
- Replace all occurrences of string AB with C without using extra space
- Sum of all substrings of a string representing a number | Set 2 (Constant Extra Space)
- Minimal moves to form a string by adding characters or appending string itself
- Check if a doubly linked list of characters is palindrome or not
- Find the player who rearranges the characters to get a palindrome string first
- Minimum characters to be added at front to make string palindrome
- Minimum number of characters to be replaced to make a given string Palindrome
- Check if a given string is a rotation of a palindrome
If you like GeeksforGeeks and would like to contribute, you can also write an article using contribute.geeksforgeeks.org or mail your article to firstname.lastname@example.org. See your article appearing on the GeeksforGeeks main page and help other Geeks.
Please Improve this article if you find anything incorrect by clicking on the "Improve Article" button below.