Je veux écrire des codes à l'aide d'une méthode de récursive statique en Java, Cleanstring (String S) qui accepte une chaîne de lettres S et renvoie une chaîne dans laquelle les lettres adjacentes sont identiques à la même apparition de cette lettre. La méthode est sensible à la casse.
Par exemple: P>
cleanString("sensssaatiionnaallll!") -> "sensational!" cleanString("PPProoggggraamm") -> "Program" cleanString("Lletterriiing") -> "Lletering"
4 Réponses :
Pourquoi vous voulez faire une méthode statique pour cela?
Whay j'ai compris est que vous souhaitez supprimer des caractères répétés de votre chaîne d'entrée. P>
Vous pouvez le faire sous le code ci-dessous. p> Si vous souhaitez que vous puissiez créer une méthode de cette 2 lignes en tant que fonctionnalité de votre code. P> J'espère que cela aide! p> p>
Il veut que les manches répétées soient réduites, pas seulement des personnages distincts.
Vous êtes très tranchant!
Essayez ceci: Tout d'abord, il vérifie si la longueur de la chaîne est inférieure à 1. S'il s'agit, renvoyez la chaîne elle-même (qui est vide) et arrêtez la récursion. P> LI>
Suivant Obtenez le premier caractère de la chaîne. (E.G Obtenez le nombre de caractères dans le démarrage qui est égal au premier caractère (3 dans le cas de Appelez à nouveau la fonction, mais cette fois-ci enlevant les premiers caractères de l'étape ci-dessus et préparé le premier caractère. (
ppprooggggramamm -> p code>) p> li>
ppprooggggramm code>) p> li>
'P' + Cleanstring ("ROOGGGGGRAMM") CODE>) P> LI>
ul> p>
Il suffit de générer une nouvelle chaîne et d'exclure les caractères de répétition.
public class Example { public static int main(String[] args) { String input = "sensssaatiionnaallll"; String output = cleanString(input, 0); System.out.println(output); // print: sensational return 0; } private static String cleanString(String input, int index) { if(input == null) return ""; if(index >= input.length()) return ""; StringBuilder output = new StringBuilder(); char current = input.charAt(index); int nextIndex = index + 1; if(nextIndex >= input.length()) { return output.append(current).toString(); } char next = input.charAt(nextIndex); if (current != next) { output.append(current); } output.append(cleanString(input, nextIndex)); return output.toString(); } }
Ce code peut-il être appelé en tant que fonction à l'intérieur de la méthode principale?
Ce n'est pas récursif
Désolé, j'ai une erreur et je ne pouvais pas remarquer qu'il faut une méthode récursive. J'ai ajouté une méthode récursive dans la réponse.
code reconsive le plus court pour supprimer les caractères adjacents de la chaîne d'entrée.
public class StackOverflow { static String cleanString(String input) { return input==null || input.length()<=1?input:cleanStringWrapper(input.substring(1),input.substring(0,1)); } static String cleanStringWrapper(String input, String result) { if (input.length() - 1 <= 0) { return result+(result.charAt(result.length() - 1)!=input.charAt(0)?input:""); } else { return cleanStringWrapper(input.substring(1), result+(result.charAt(result.length() - 1) != input.charAt(0)?input.charAt(0):"")); } } public static void main(String[] args) { System.out.println(cleanString("OOPS")); } }
Bonjour, puis-je savoir où implémentez-vous ce code? Comment le mettre dans la fonction principale ??
Bonjour, j'ai partagé le code mis à jour avec la classe principale. S'il vous plaît passez à travers une fois. Si vous trouvez des difficultés plus loin, alors nous pouvons discuter.
Bon, ça marche! Apprécié vos efforts (:
Qu'avez-vous fait jusqu'à présent ? Cela nous aiderait à commenter les améliorations que vous pouvez faire au code pour atteindre vos résultats.
Comment êtes-vous arrivé à la décision de faire une fonction récursive pour résoudre ce problème? Est-ce votre devoir?
Voulez-vous dire
VOID Clearstring (String s) Code> ou
String CleanString (String) Code>?
Et comment vous allez effacer "gooooogle"?