Lexicográficamente siguiente string

Dada una string, encuentre lexicográficamente la siguiente string.

Ejemplos: 

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

Si la string está vacía, devolvemos ‘a’. Si la string contiene todos los caracteres como ‘z’, agregamos ‘a’ al final. De lo contrario, encontramos el primer carácter desde el final que no es z y lo incrementamos.

Implementación:

C++

// 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 code
int main()
{
    string str = "samez";
    cout << nextWord(str);
    return 0;
}

Java

// Java program to find
// lexicographically next string
import 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 characters
else
    str = str.substring(0, i) +
         (char)((int)(str.charAt(i)) + 1) +
                      str.substring(i + 1);
return str;
}
 
// Driver Code
public static void main (String[] args)
{
    String str = "samez";
    System.out.print(nextWord(str));
}
}
 
// This code is contributed
// by Kirti_Mangal

Python3

# 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 code
if __name__ == '__main__':
    str = "samez"
    print(nextWord(str))
     
# This code is contributed by
# Sanjit_Prasad

C#

// C# program to find
// lexicographically next string
using 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 Code
public static void Main(string[] args)
{
    string str = "samez";
    Console.Write(nextWord(str));
}
}
 
// This code is contributed by Shrikant13

Javascript

<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 code
var str = "samez".split('');
document.write( nextWord(str));
 
// This code is contributed by noob2000.
</script>
Producción

samfz

Complejidad temporal: O(n)
Espacio auxiliar: O(1)

Este artículo es una contribución de Pawan Asipu . Si te gusta GeeksforGeeks y te gustaría contribuir, también puedes escribir un artículo usando write.geeksforgeeks.org o enviar tu artículo por correo a review-team@geeksforgeeks.org. Vea su artículo que aparece en la página principal de GeeksforGeeks y ayude a otros Geeks. 

Publicación traducida automáticamente

Artículo escrito por GeeksforGeeks-1 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *