2016-12-19 3 views
2

Grundsätzlich, ich bin auf der Suche nach der Verkettung von 2 Zeichenfolgen, Wenn jedoch die Verkettung erstellt ein Doppel-char, dann ich eine von ihnen weglassen.Rückkehr Verkettung von 2 Zeichenfolgen Java

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

oben ist mein Code, aber ich frage mich, ob es eine Möglichkeit, es mit weniger Code geschrieben zu tun ist, oder um genauer zu sein, wenn es eine Möglichkeit, die ersten zwei Bedingungen zu ersetzen, mit nur einem Zeile oder 2 des Codes.

+0

Ich denke, Java hat eine eingebaute String.concat method.https: //www.tutorialspoint.com/java/java_string_concat.htm –

Antwort

1

Verwenden charAt statt subString den 2-Zeichen zu erhalten, die Sie vergleichen wollen:

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

Die ersten beiden Bedingungen können durch

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

die Kombination der beiden ersetzt werden kann, schreiben Sie:

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()); 
    } 
} 

die durch eine (ziemlich lange) lin ersetzt werden kann er:

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())); 
} 

Dies wird davon ausgegangen, dass keiner der Eingabezeichenfolgen null sein kann.

0
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())); 
} 

Erläuterung:

  • Rückkehr immer a+(next expression)
  • nächster Ausdruck 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.
  • wenn obige Bedingung fehlschlägt, dann nur b zu einem hinzufügen und zurück;