Find a string such that every character is lexicographically greater than its immediate next character
Given an integer N, the task is to find a string(considering only lowercase characters) of length (N+1) such that the character at any position should be lexicographically greater than its immediate next character.
Examples:
Input: 2 Output: cba c is greater than b and b is greater than a Input: 5 Output: fedcba
Approach: Given an integer N, the task is to find a string(considering only lowercase characters) of length (N+1) such that the character at any position should be lexicographically greater than its immediate
- Declare a string with all the alphabets in reverse order.
- Take modulus of the given number with 26. So, if the value is less than 26, run a loop from 26 – (Modulus Value + 1) to 25 and go to that index of the string and print that index.
- Divide the modulus value with 26 if value comesGiven an integer N, the task is to find a string(considering only lowercase characters) of length (N+1) such that the character at any position should be lexicographically greater than its immediate greater than 0 then run the loop to 0 to 25 and print every element of the string by given the calculated value.
Below is the implementation of above approach:
C++
// C++ program to print a string in reverse // alphabetical order upto given number #include <bits/stdc++.h> using namespace std; // Function that prints the required string string printString( int n, string str) { string str2 = "" ; // Find modulus with 26 int extraChar = n % 26; // Print extra characters required if (extraChar >= 1) { for ( int i = 26 - (extraChar + 1); i <= 25; i++) str2 += str[i]; } int countOfStr = n / 26; // Print the given reverse string countOfStr times for ( int i = 1; i <= countOfStr; i++) { for ( int j = 0; j < 26; j++) str2 += str[j]; } return str2; } // Driver Code int main() { int n = 30; // Initialize a string in reverse order string str = "zyxwvutsrqponmlkjihgfedcba" ; cout << printString(n, str); return 0; } |
Java
// Java program to print a String in reverse // alphabetical order upto given number class GFG { // Function that prints the required String static String printString( int n, String str) { String str2 = "" ; // Find modulus with 26 int extraChar = n % 26 ; // Print extra characters required if (extraChar >= 1 ) { for ( int i = 26 - (extraChar + 1 ); i <= 25 ; i++) { str2 += str.charAt(i); } } int countOfStr = n / 26 ; // Print the given reverse String countOfStr times for ( int i = 1 ; i <= countOfStr; i++) { for ( int j = 0 ; j < 26 ; j++) { str2 += str.charAt(j); } } return str2; } // Driver Code public static void main(String[] args) { int n = 30 ; // Initialize a String in reverse order String str = "zyxwvutsrqponmlkjihgfedcba" ; System.out.println(printString(n, str)); } } // This code is contributed by Rajput-JI |
Python 3
# Python 3 program to print a # string in reverse alphabetical # order upto given number # Function that prints the # required string def printString(n, str ): str2 = "" # Find modulus with 26 extraChar = n % 26 # Print extra characters required if (extraChar > = 1 ) : for i in range ( 26 - (extraChar + 1 ), 26 ): str2 + = str [i] countOfStr = n / / 26 # Print the given reverse # string countOfStr times for i in range ( 1 , countOfStr + 1 ) : for j in range ( 26 ): str2 + = str [j] return str2 # Driver Code if __name__ = = "__main__" : n = 30 # Initialize a string in # reverse order str = "zyxwvutsrqponmlkjihgfedcba" print (printString(n, str )) # This code is contributed # by ChitraNayal |
C#
// C# program to print a String in reverse // alphabetical order upto given number using System; public class GFG { // Function that prints the required String static String printString( int n, String str) { String str2 = "" ; // Find modulus with 26 int extraChar = n % 26; // Print extra characters required if (extraChar >= 1) { for ( int i = 26 - (extraChar + 1); i <= 25; i++) { str2 += str[i]; } } int countOfStr = n / 26; // Print the given reverse String countOfStr times for ( int i = 1; i <= countOfStr; i++) { for ( int j = 0; j < 26; j++) { str2 += str[j]; } } return str2; } // Driver Code public static void Main() { int n = 30; // Initialize a String in reverse order String str = "zyxwvutsrqponmlkjihgfedcba" ; Console.Write(printString(n, str)); } } // This code is contributed by Rajput-JI |
Javascript
<script> // JavaScript program to print a string in reverse // alphabetical order upto given number // Function that prints the required string function printString(n, str) { var str2 = "" ; // Find modulus with 26 var extraChar = n % 26; // Print extra characters required if (extraChar >= 1) { for ( var i = 26 - (extraChar + 1); i <= 25; i++) str2 += str[i]; } var countOfStr = parseInt(n / 26); // Print the given reverse string countOfStr times for ( var i = 1; i <= countOfStr; i++) { for ( var j = 0; j < 26; j++) str2 += str[j]; } return str2; } // Driver Code var n = 30; // Initialize a string in reverse order var str = "zyxwvutsrqponmlkjihgfedcba" ; document.write(printString(n, str)); // This code is contributed by rdtank. </script> |
edcbazyxwvutsrqponmlkjihgfedcba
Complexity Analysis:
- Time Complexity: O(n)
- Auxiliary Space: O(n)
This article is contributed by Sahil Rajput. If you like GeeksforGeeks and would like to contribute, you can also write an article using write.geeksforgeeks.org or mail your article to review-team@geeksforgeeks.org. See your article appearing on the GeeksforGeeks main page and help other Geeks.
Please Login to comment...