IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage Java Discussion :

Programme basique de compactage de chaines


Sujet :

Langage Java

  1. #1
    Candidat au Club
    Homme Profil pro
    Apprenant
    Inscrit en
    Juillet 2022
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Allier (Auvergne)

    Informations professionnelles :
    Activité : Apprenant

    Informations forums :
    Inscription : Juillet 2022
    Messages : 3
    Points : 3
    Points
    3
    Par défaut Programme basique de compactage de chaines
    Bonjour à tous,

    Je m'excuse par avance pour la naïveté de la question qui suit :
    Dans des annales, j'ai trouvé le sujet suivant en photo ci-dessous.


    Nom : question_java.png
Affichages : 160
Taille : 163,9 Ko

    Est-ce que quelqu'un aurait une solution utilisant la variable start ? Je me suis débrouillé sans mais j'aimerai collé avec l'énoncé pour faire la suite de l'exercice.

    Merci à tous ceux qui pourront prendre 5 min pour me répondre.

    Djorgeo

  2. #2
    Membre éclairé

    Profil pro
    Inscrit en
    Janvier 2009
    Messages
    461
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2009
    Messages : 461
    Points : 894
    Points
    894
    Billets dans le blog
    5
    Par défaut
    Pour être honnête, ça va être dur de répondre à ta question. Ça ne semble pas être une question de Java, mais bien d'algorithmique.

    Tu trouveras des réponse ici:
    https://fr.wikipedia.org/wiki/Algori...us-cha%C3%AEne

    Il y a aussi un chapitre dans le gros livre d'algo:
    https://www.dunod.com/sciences-techn...-158-problemes

    Cordialement.

  3. #3
    Candidat au Club
    Homme Profil pro
    Apprenant
    Inscrit en
    Juillet 2022
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Allier (Auvergne)

    Informations professionnelles :
    Activité : Apprenant

    Informations forums :
    Inscription : Juillet 2022
    Messages : 3
    Points : 3
    Points
    3
    Par défaut
    Merci pour ta réponse, je vais gratter du côté algo ;-)

  4. #4
    Membre éclairé

    Profil pro
    Inscrit en
    Janvier 2009
    Messages
    461
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2009
    Messages : 461
    Points : 894
    Points
    894
    Billets dans le blog
    5
    Par défaut
    Après avoir relu ta question, l'algo est simple.

    Tu prends le premier caractère. Tu mets dans le StringBuilder.

    Puis tu boucle sur les caractères de ta chaine.

    Si le caractère est le même que précédent:
    Rien

    si le caractère est un espace:
    Prendre en compte que le prochain caractère devra être ajouté, sauf si blanc.

    Sinon:
    Ajoute caractère.

    Cordialement.

  5. #5
    Modérateur

    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    12 551
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 12 551
    Points : 21 607
    Points
    21 607
    Par défaut
    Certes mais on rejoint la problématique de la question, qui est en substance :

    "Mais euh, cette variable start, elle sert à rien si ?"

    Ma foi on peut s'en servir en lieu et place de se rappeler le précédent caractère, mais enfin, ça me semble pas flamboyant de bon sens, personnellement.
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  6. #6
    Candidat au Club
    Homme Profil pro
    Apprenant
    Inscrit en
    Juillet 2022
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Allier (Auvergne)

    Informations professionnelles :
    Activité : Apprenant

    Informations forums :
    Inscription : Juillet 2022
    Messages : 3
    Points : 3
    Points
    3
    Par défaut
    Bonsoir, merci pour vos réponses,

    J'avais une solution similaire à celle de @PhilippeGibault ; mais elle ne colle pas avec le canevas proposé.
    C'est d'ailleurs pour cela que j'ai du mal à me servir de cette variable start.

    Je continue mes recherches

    D.

  7. #7
    Modérateur
    Avatar de OButterlin
    Homme Profil pro
    Inscrit en
    Novembre 2006
    Messages
    7 310
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 7 310
    Points : 9 522
    Points
    9 522
    Billets dans le blog
    1
    Par défaut
    Allez, je spoile
    Avec "start"
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
     
            StringBuilder result = new StringBuilder();
            String origine = "AAABB BBC CCAA";
            int start = -1;
     
            for (int i = 0; i < origine.length(); i++)
            {
                char ch = origine.charAt(i);
                if (ch == ' ')
                {
                    start = -1;
                }
                else if (start == -1 || ch != origine.charAt(start))
                {
                    start = i;
                    result.append(ch);
                }
            }
     
            System.out.println("V1 = " + result);
    Ce que j'aurais fait
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
     
            StringBuilder result = new StringBuilder();
            String origine = "AAABB BBC CCAA";
            char previousChar = ' ';
     
            for (int i = 0; i < origine.length(); i++)
            {
                char ch = origine.charAt(i);
                if (ch == ' ')
                {
                    previousChar = ' ';
                }
                else if (ch != previousChar)
                {
                    previousChar = ch;
                    result.append(ch);
                }
            }
     
            System.out.println("V2 = " + result);
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

Discussions similaires

  1. Besoin d'aide - programmation basique
    Par Mr_Trickster dans le forum Langage
    Réponses: 3
    Dernier message: 10/11/2008, 08h41
  2. [DEBUTANT] Programme basique
    Par mikysett dans le forum Langage
    Réponses: 25
    Dernier message: 18/11/2007, 15h54
  3. programme python : conversion nombre en chaine de caracteres
    Par koala_64 dans le forum Général Python
    Réponses: 6
    Dernier message: 02/11/2007, 21h10
  4. Réponses: 3
    Dernier message: 30/03/2007, 18h03
  5. Programmer une boucle de saisie chaine de caractère.
    Par Spike Spiegel dans le forum C
    Réponses: 30
    Dernier message: 02/10/2005, 17h46

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo