Lexicographically next string

09 Jun, 2022
Given a string, find lexicographically next string.Examples:  
Input : geeks
Output : geekt
The last character 's' is changed to 't'.

Input : raavz
Output : raawz
Since we can't increase last character, 
we increment previous character.

Input :  zzz
Output : zzza
 
If string is empty, we return ‘a’. If string contains all characters as ‘z’, we append ‘a’ at the end. Otherwise we find first character from end which is not z and increment it. 
C++
Java
Python3
C#
Javascript
// C++ program to find lexicographically next// string#include <bits/stdc++.h>using namespace std; string nextWord(string s){    // If string is empty.    if (s == "")        return "a";     // Find first character from right    // which is not z.         int i = s.length() - 1;    while (s[i] == 'z' && i >= 0)        i--;     // If all characters are 'z', append    // an 'a' at the end.    if (i == -1)        s = s + 'a';     // If there are some non-z characters    else        s[i]++;     return s;} // Driver codeint main(){    string str = "samez";    cout << nextWord(str);    return 0;}
// Java program to find// lexicographically next stringimport java.util.*; class GFG{public static String nextWord(String str){         // if string is empty    if (str == "")    return "a";         // Find first character from    // right which is not z.    int i = str.length() - 1;    while (str.charAt(i) == 'z' && i >= 0)        i--;             // If all characters are 'z',    // append an 'a' at the end.    if (i == -1)        str = str + 'a'; // If there are some// non-z characterselse    str = str.substring(0, i) +         (char)((int)(str.charAt(i)) + 1) +                      str.substring(i + 1);return str;} // Driver Codepublic static void main (String[] args){    String str = "samez";    System.out.print(nextWord(str));}} // This code is contributed// by Kirti_Mangal
# Python 3 program to find lexicographically# next string def nextWord(s):         # If string is empty.    if (s == " "):        return "a"     # Find first character from right    # which is not z.    i = len(s) - 1    while (s[i] == 'z' and i >= 0):        i -= 1     # If all characters are 'z', append    # an 'a' at the end.    if (i == -1):        s = s + 'a'     # If there are some non-z characters    else:        s = s.replace(s[i], chr(ord(s[i]) + 1), 1)     return s # Driver codeif __name__ == '__main__':    str = "samez"    print(nextWord(str))     # This code is contributed by# Sanjit_Prasad
// C# program to find// lexicographically next stringusing System; class GFG{public static string nextWord(string str){     // if string is empty    if (str == "")    {    return "a";    }     // Find first character from    // right which is not z.    int i = str.Length - 1;    while (str[i] == 'z' && i >= 0)    {        i--;    }     // If all characters are 'z',    // append an 'a' at the end.    if (i == -1)    {        str = str + 'a';    }     // If there are some    // non-z characters    else    {        str = str.Substring(0, i) +             (char)((int)(str[i]) + 1) +              str.Substring(i + 1);    }    return str;} // Driver Codepublic static void Main(string[] args){    string str = "samez";    Console.Write(nextWord(str));}} // This code is contributed by Shrikant13
<script> // Javascript program to find lexicographically next// string function nextWord(s){    // If string is empty.    if (s == "")        return "a";     // Find first character from right    // which is not z.         var i = s.length - 1;    while (s[i] == 'z' && i >= 0)        i--;     // If all characters are 'z', append    // an 'a' at the end.    if (i == -1)        s = s + 'a';     // If there are some non-z characters    else        s[i] = String.fromCharCode(s[i].charCodeAt(0)+1);     return s.join('');} // Driver codevar str = "samez".split('');document.write( nextWord(str)); // This code is contributed by noob2000.</script>
samfz
Time Complexity: O(n)
Auxiliary Space: O(1)This article is contributed by Pawan Asipu. 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 write comments if you find anything incorrect, or you want to share more information about the topic discussed above. 
Kirti_Mangal
shrikanth13
Sanjit_Prasad
noob2000
hasani
lexicographic-ordering
Strings
Strings
Writing code in comment?
Please use ide.geeksforgeeks.org,
generate link and share the link here.
Write a program to reverse an array or string
Reverse a string in Java
Write a program to print all permutations of a given string
C++ Data Types
Python program to check if a string is palindrome or not
Longest Common Subsequence | DP-4
Check for Balanced Brackets in an expression (well-formedness) using Stack
Different Methods to Reverse a String in C++
Length of the longest substring without repeating characters
Top 50 String Coding Problems for Interviews