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:

  1. Declare a string with all the alphabets in reverse order.
  2. 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.
  3. Divide the modulus value with 26 if value comes 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++

filter_none

edit
close

play_arrow

link
brightness_4
code

// 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;
}

chevron_right


Java

filter_none

edit
close

play_arrow

link
brightness_4
code

// 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 

chevron_right


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#

filter_none

edit
close

play_arrow

link
brightness_4
code

// 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 

chevron_right



Output:

edcbazyxwvutsrqponmlkjihgfedcba

This article is contributed by Sahil Rajput. If you like GeeksforGeeks and would like to contribute, you can also write an article using contribute.geeksforgeeks.org or mail your article to contribute@geeksforgeeks.org. See your article appearing on the GeeksforGeeks main page and help other Geeks.

Please write comments if you find anything incorrect, or you want to share more information about the topic discussed above.



My Personal Notes arrow_drop_up

Improved By : Rajput-Ji, Ita_c