Given a string str, the task is to check if string str is a substring of an infinite length string S in which lowercase alphabets are concatenated in reverse order as:
S = “zyxwvutsrqponmlkjihgfedcbazyxwvutsrqponmlkjihgfedcba….”
Input: str = “cbaz”
Given string “cbaz” is a valid sub string of S.
Input: str = “ywxtuv”
Given string “ywxtuv” is a valid sub string of S.
Approach: It can be observed that every next character has a lower ASCII value than the previous character except when ‘a’ is followed by ‘z’. The best way to solve this problem is to simply check for every character if the character following it has a lower ASCII value. Ignore this comparison when the current character is ‘a’. If the current character ‘a’ occurred then check if it is followed by character is ‘z’.
Below are the steps:
- Create a flag variable to mark if a given string is a valid substring or not. Initially set it to true.
- Traverse the given string str, and for every character, str[i] do the following:
- If str[i+1] + 1 < str[i], continue with the loop.
- If str[i] = ‘a’ and str[i+1] = ‘z’, again continue with the loop.
- Else mark flag variable as false and break from the loop.
- Finally, if the flag is true print YES else print NO.
Below is the implementation of the above approach :
Time Complexity: O(N)
Auxiliary Space: O(1)
Attention reader! Don’t stop learning now. Get hold of all the important DSA concepts with the DSA Self Paced Course at a student-friendly price and become industry ready.
- Longest palindromic String formed using concatenation of given strings in any order
- Longest palindromic string formed by concatenation of prefix and suffix of a string
- Check if a string is concatenation of another given string
- Check if concatenation of any permutation of given list of arrays generates the given array
- Minimum number of times A has to be repeated such that B is a substring of it
- Find if a given string can be represented from a substring by iterating the substring “n” times
- Partition given string in such manner that i'th substring is sum of (i-1)'th and (i-2)'th substring
- Longest substring of 0s in a string formed by k concatenations
- String formed with middle character of every right substring followed by left sequentially
- Check if a string can be repeated to make another string
- Check if any permutation of string is a K times repeated string
- Number of ways in which the substring in range [L, R] can be formed using characters out of the range
- Minimum flips required to convert given string into concatenation of equal substrings of length K
- Minimize cost to convert given string into concatenation of equal substrings of length K
- Check if the concatenation of first N natural numbers is divisible by 3
- Length of the largest substring which have character with frequency greater than or equal to half of the substring
- Minimum length of substring whose rotation generates a palindromic substring
- Check if the given string is shuffled substring of another string
- Minimum concatenation required to get strictly LIS for the given array
- Cost required to empty a given array by repeated removal of maximum obtained by given operations
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.