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