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

avec Java Discussion :

Comparaison entre deux chaîne de caractère


Sujet :

avec Java

  1. #1
    Membre confirmé
    Inscrit en
    Octobre 2009
    Messages
    95
    Détails du profil
    Informations personnelles :
    Âge : 42

    Informations forums :
    Inscription : Octobre 2009
    Messages : 95
    Par défaut Comparaison entre deux chaîne de caractère
    Salut mes amis

    je voudrai faire une comparaison entre deux chaînes de caractères pour que j'afficherai s'ils sont jumeaux ou non.
    Par exemple "abc" et "cab" ou "bac" ces chaînes de caractères sont tous jumeaux

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    package com.hr.access.chaine;
     
    public class ChaineCaractere {
     
    	public static void main(String[] args) {
    		System.out.println(Solution.isTwin("hello", "world"));// false
    		System.out.println(Solution.isTwin("abc", "cab"));// true
    		System.out.println(Solution.isTwin("Lookout", "outlook"));// true
    	}
    }
    et l'autre classe Solution est la suivante
    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
    21
    22
    package com.hr.access.chaine;
     
    public class Solution {
     
    	public static boolean isTwin(String a, String b) {
    		int longA = a.length();
    		int longB = b.length();
    		boolean retourneValeur;
    		if (longA != longB) {
    			System.out.println("Le deux chaine ne sont pas jumeau");
    			retourneValeur = false;
    		} else {
    			char chaineA[] = a.toCharArray();
    			char chaineB[] = b.toCharArray();
     
    			retourneValeur = true;
    		}
     
    		return retourneValeur;
    	}
     
    }
    Qu'est ce que je peux ajouter dans le bloc de else pour qu'il m'affiche si ce test est jumeaux ou non et Merci d'avance

  2. #2
    Modérateur
    Avatar de joel.drigo
    Homme Profil pro
    Ingénieur R&D - Développeur Java
    Inscrit en
    Septembre 2009
    Messages
    12 430
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur R&D - Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2009
    Messages : 12 430
    Billets dans le blog
    2
    Par défaut
    Salut,

    1. approche 1, simple : trier les deux tableaux (voir classe java.util.Arrays), puis tester s'ils sont égaux
    2. approche 2 : chercher si tous les caractères du premier tableau sont dans le second, puis chercher si tous les caractères du second sont dans le premier
    3. ...

    Eventuellement, traiter le cas de l'égalité à part, comme pour le test sur la longueur, (si les deux chaînes sont égales par equals() alors les deux sont jumelles).
    L'expression "ça marche pas" ne veut rien dire. Indiquez l'erreur, et/ou les comportements attendus et obtenus, et donnez un Exemple Complet Minimal qui permet de reproduire le problème.
    La plupart des réponses à vos questions sont déjà dans les FAQs ou les Tutoriels, ou peut-être dans une autre discussion : utilisez la recherche interne.
    Des questions sur Java : consultez le Forum Java. Des questions sur l'EDI Eclipse ou la plateforme Eclipse RCP : consultez le Forum Eclipse.
    Une question correctement posée et rédigée et vous aurez plus de chances de réponses adaptées et rapides.
    N'oubliez pas de mettre vos extraits de code entre balises CODE (Voir Mode d'emploi de l'éditeur de messages).
    Nouveau sur le forum ? Consultez Les Règles du Club.

  3. #3
    Membre confirmé
    Inscrit en
    Octobre 2009
    Messages
    95
    Détails du profil
    Informations personnelles :
    Âge : 42

    Informations forums :
    Inscription : Octobre 2009
    Messages : 95
    Par défaut re
    alors dans mon code pour la Class Solution dans la dernière partie dans le bloc else qui ne peut pas être que si le deux mots sont egaux. nous devrons passer le test qui sera au début

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
                 char chaineA[] = a.toCharArray(); // mettre la chaine a dans un tableau chaineA
    			char chaineB[] = b.toCharArray(); // mettre la chaine b dans un tableau chaineB
    			for (int i = 0; i < longA; i++) {
    				char aux = chaineA[i];
    				for (int j = 0; j < longB; j++) {
    					if (chaineB[j] == aux) {
    						// dans cette partie qu'st ce que je peux mettre ?
    					}
    				}
    			}
    Juste dans cette partie que'est ce que je peux mettre pour incrémenté et faire la comparaison?

  4. #4
    Modérateur
    Avatar de dinobogan
    Homme Profil pro
    ingénieur
    Inscrit en
    Juin 2007
    Messages
    4 073
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France

    Informations professionnelles :
    Activité : ingénieur
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2007
    Messages : 4 073
    Par défaut
    Tu vas devoir marquer le caractère prit dans la chaine B. Par exemple par un tableau de booléen de taille égale à la chaine B. Tu t'autorises à faire une comparaison avec un char de B uniquement si la case du tableau de booléens est à faux.
    Si tu sélectionnes un char de B, alors tu met faux dans la case du tableau booléens correspondant.
    Autre possibilité : après sélection d'un char de B, tu le modifies pour être sur que tu ne le reprendras jamais. Par exemple tu y places la valeur 255.
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java
    Que la force de la puissance soit avec le courage de ta sagesse.

  5. #5
    Modérateur
    Avatar de joel.drigo
    Homme Profil pro
    Ingénieur R&D - Développeur Java
    Inscrit en
    Septembre 2009
    Messages
    12 430
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur R&D - Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2009
    Messages : 12 430
    Billets dans le blog
    2
    Par défaut
    Citation Envoyé par B.M.W83 Voir le message
    alors dans mon code pour la Class Solution dans la dernière partie dans le bloc else qui ne peut pas être que si le deux mots sont egaux. nous devrons passer le test qui sera au début
    Je ne comprends rien du tout.

    Citation Envoyé par B.M.W83 Voir le message

    Juste dans cette partie que'est ce que je peux mettre pour incrémenté et faire la comparaison?
    J'ai proposé deux approches. Une simple et une moins simple. Si tu ne sais pas faire la moins simple, pourquoi ne pas tenter la plus simple ?
    L'expression "ça marche pas" ne veut rien dire. Indiquez l'erreur, et/ou les comportements attendus et obtenus, et donnez un Exemple Complet Minimal qui permet de reproduire le problème.
    La plupart des réponses à vos questions sont déjà dans les FAQs ou les Tutoriels, ou peut-être dans une autre discussion : utilisez la recherche interne.
    Des questions sur Java : consultez le Forum Java. Des questions sur l'EDI Eclipse ou la plateforme Eclipse RCP : consultez le Forum Eclipse.
    Une question correctement posée et rédigée et vous aurez plus de chances de réponses adaptées et rapides.
    N'oubliez pas de mettre vos extraits de code entre balises CODE (Voir Mode d'emploi de l'éditeur de messages).
    Nouveau sur le forum ? Consultez Les Règles du Club.

  6. #6
    Membre confirmé
    Inscrit en
    Octobre 2009
    Messages
    95
    Détails du profil
    Informations personnelles :
    Âge : 42

    Informations forums :
    Inscription : Octobre 2009
    Messages : 95
    Par défaut la solution
    pour comparer entre deux chaîne de caractère nous devrons utiliser cette méthode

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    public static boolean isTwinChars (String a, String b) {
            char[] aca = a.toLowerCase().toCharArray();
            char[] bca = b.toLowerCase().toCharArray();
            Arrays.sort(aca);
            Arrays.sort(bca);
            System.out.println(new String(aca));
            System.out.println(new String(bca));
            return new String(aca).equals(new String(bca));
        }
    et voila pas d'explication détailler mais la fonction ça marche et merci pour l'aide

  7. #7
    Modérateur
    Avatar de joel.drigo
    Homme Profil pro
    Ingénieur R&D - Développeur Java
    Inscrit en
    Septembre 2009
    Messages
    12 430
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur R&D - Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2009
    Messages : 12 430
    Billets dans le blog
    2
    Par défaut
    Citation Envoyé par B.M.W83 Voir le message
    pour comparer entre deux chaîne de caractère nous devrons utiliser cette méthode

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    public static boolean isTwinChars (String a, String b) {
            char[] aca = a.toLowerCase().toCharArray();
            char[] bca = b.toLowerCase().toCharArray();
            Arrays.sort(aca);
            Arrays.sort(bca);
            System.out.println(new String(aca));
            System.out.println(new String(bca));
            return new String(aca).equals(new String(bca));
        }

    Oui, c'est la solution que j'ai indiquée dès le début, enfin presque : inutile de créer des String pour la comparaison, il suffit de comparer les tableaux :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
            return Arrays.equals(aca,bca);
    L'expression "ça marche pas" ne veut rien dire. Indiquez l'erreur, et/ou les comportements attendus et obtenus, et donnez un Exemple Complet Minimal qui permet de reproduire le problème.
    La plupart des réponses à vos questions sont déjà dans les FAQs ou les Tutoriels, ou peut-être dans une autre discussion : utilisez la recherche interne.
    Des questions sur Java : consultez le Forum Java. Des questions sur l'EDI Eclipse ou la plateforme Eclipse RCP : consultez le Forum Eclipse.
    Une question correctement posée et rédigée et vous aurez plus de chances de réponses adaptées et rapides.
    N'oubliez pas de mettre vos extraits de code entre balises CODE (Voir Mode d'emploi de l'éditeur de messages).
    Nouveau sur le forum ? Consultez Les Règles du Club.

  8. #8
    Invité de passage
    Homme Profil pro
    Développeur Java
    Inscrit en
    Juillet 2018
    Messages
    1
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Juillet 2018
    Messages : 1
    Par défaut Twin
    Une autre solution moins consommatrice en mémoire :

    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
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
     
    public class Twin {
     
        public static void main( String[] args ) {
            System.out.println( twin( "a", "A" ) );
     
        }
     
        public static boolean twin( String s1, String s2 ) {
            boolean ret = false;
            if ( s1 == null || s1 == null || s1.equals( "" ) || s2.equals( "" ) ) {
                return ret;
            }
            s1 = s1.toUpperCase();
            s2 = s2.toUpperCase();
            for ( int i = 0; i < s1.length(); i++ ) {
                if ( !s2.contains( "" + s1.charAt( i ) ) ) {
                    return ret;
                } else {
                    s2 = supprimerCharFromString( s2, s1.charAt( i ) );
                }
            }
            ret = s2.equals( "" );
            return ret;
        }
     
        public static String supprimerCharFromString( String s, char c ) {
            String ret = "";
            boolean b = true;
            for ( int i = 0; i < s.length(); i++ ) {
                if ( b && s.charAt( i ) == c ) {
                    b = false;
                    continue;
                }
                ret += s.charAt( i );
     
            }
            return ret;
        }
    }

  9. #9
    Modérateur
    Avatar de joel.drigo
    Homme Profil pro
    Ingénieur R&D - Développeur Java
    Inscrit en
    Septembre 2009
    Messages
    12 430
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur R&D - Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2009
    Messages : 12 430
    Billets dans le blog
    2
    Par défaut
    Citation Envoyé par yb2018 Voir le message
    Une autre solution moins consommatrice en mémoire :
    En quoi créer de multiples StringBuilder (par les concaténations du type ""+ String/char) et de nouvelles String (par supprimerCharFromString()) serait moins consommatrice de mémoire ?
    L'expression "ça marche pas" ne veut rien dire. Indiquez l'erreur, et/ou les comportements attendus et obtenus, et donnez un Exemple Complet Minimal qui permet de reproduire le problème.
    La plupart des réponses à vos questions sont déjà dans les FAQs ou les Tutoriels, ou peut-être dans une autre discussion : utilisez la recherche interne.
    Des questions sur Java : consultez le Forum Java. Des questions sur l'EDI Eclipse ou la plateforme Eclipse RCP : consultez le Forum Eclipse.
    Une question correctement posée et rédigée et vous aurez plus de chances de réponses adaptées et rapides.
    N'oubliez pas de mettre vos extraits de code entre balises CODE (Voir Mode d'emploi de l'éditeur de messages).
    Nouveau sur le forum ? Consultez Les Règles du Club.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Comparaison de deux chaînes de caractères
    Par oursblanc dans le forum Général Java
    Réponses: 3
    Dernier message: 22/11/2017, 11h33
  2. Expression régulière (comparaison de deux chaînes de caractères)
    Par jfo88 dans le forum Algorithmes et structures de données
    Réponses: 7
    Dernier message: 09/05/2016, 16h00
  3. Réponses: 2
    Dernier message: 19/08/2013, 23h30
  4. Réponses: 4
    Dernier message: 07/06/2007, 22h35
  5. Comparaison entre deux chaînes
    Par fifi87 dans le forum Assembleur
    Réponses: 2
    Dernier message: 12/12/2006, 20h55

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