2 votes

retourne la concaténation de 2 chaînes de caractères java

En gros, je cherche à retourner la concaténation de 2 chaînes de caractères. Cependant, si la concaténation crée une double-chaîne, alors j'en omets une.

public String conCat(String a, String b) {
  if(a.isEmpty()){
     return b;
  }
  if(b.isEmpty()){
     return a;
  }
  if(a.substring(a.length()-1, a.length()).equals(b.substring(0,1))){
     return a+b.substring(1, b.length());
  }
  return a+b;
}

ci-dessus est mon code, mais je me demande s'il y a un moyen de le faire avec moins de code écrit, ou pour être plus précis, s'il y a un moyen de remplacer les 2 premières conditions, avec juste une ligne ou 2 de code.

1voto

Eran Points 35360

Utilisez charAt au lieu de subString pour obtenir les 2 caractères que vous voulez comparer :

if (a.charAt(a.length()-1)==b.charAt(0))

Les deux premières conditions peuvent être remplacées par

if(a.isEmpty() || b.isEmpty()) {
    return a+b;
}

En combinant les deux, on peut écrire :

public String conCat(String a, String b) {
    if(a.isEmpty() || b.isEmpty() || a.charAt(a.length()-1) != b.charAt(0)) {
        return a + b;
    } else {
        return a + b.substring(1, b.length());
    }
}

qui peut être remplacé par un (assez long) one liner :

public String conCat(String a, String b) {
    return (a.isEmpty() || b.isEmpty() || a.charAt(a.length()-1) != b.charAt(0)) ? (a + b) : (a + b.substring(1, b.length()));
}

Cela suppose qu'aucune des chaînes d'entrée ne peut être nulle.

0voto

public String conCat(String a, String b) {
   return a + ((a.isEmpty() || b.isEmpty()) || b.charAt(0) != a.charAt(a.length() - 1) ? b : b.substring(1, b.length()));
}

Explication :

  • toujours revenir a+(next expression)
  • expression suivante check if a or b is empty or they don't have common char at a's last position and b's start position if any other condition becomes true means we have to add substring of b starts from the 1'st index.
  • si la condition ci-dessus échoue, il suffit d'ajouter b à a et de retourner ;

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X