Es ist ein Memo für mich zum Lernen
Die Schlussfolgerung ist --StringBuilder wird beim Verbinden und Spiegeln empfohlen
Vor kurzem studiere ich Java-Grammatik mit dem AtCoder-Problem.
ABC146 F -Sugoroku Es ist eine Geschichte, die beginnt, als ich auf etwas namens StringBuilder stieß, als ich String umkehren wollte, als ich darauf stieß.
Sie können dies leicht verstehen, indem Sie auf den Link unten schauen. https://qiita.com/shunsuke227ono/items/e8f34c67dcffa0fa28ad https://www.javadrive.jp/start/stringbuilder/
Kurz zusammengefasst
--String ist unveränderlich und StringBuilder ist veränderbar --String kann im Code auch als veränderlich beschrieben werden (S = S + "a" usw.) --StringBuilder ist speicher- und zeiteffizienter zum Hinzufügen und Einfügen von Zeichenfolgen
Es scheint also, dass die Verwendung von StringBuilder empfohlen wird, aber ** Ich habe auf der String-Seite keine Vorteile gesehen **, also? Ist es ein Kind, das String nicht braucht? (Wahrscheinlich nicht).
――― 2020/02/02 postscript ――― (Der Titel wurde ebenfalls geändert) Er wies in den Kommentaren darauf hin und führte ↓ gute Links ↓ ein. https://qiita.com/yoshi389111/items/67354ba33f9271ef2c68
Es scheint kein Problem mit dem Operator + zu geben, wenn Zeichenfolgenkonstanten oder eine Anweisung kombiniert werden.
Wenn Sie die Zeichenfolge wie dieses Mal invertieren möchten, ist es besser, StringBuilder oder List \
Hinzugefügt, weil ich auf ein anderes Problem und Wissen gestoßen bin
ABC159 B - String Palindrome Beurteilung, ob die Zeichenkette ein Kreis ist (+ α). Ich habe den Code mit der Idee geschrieben, ob ein StringBuilder und seine invertierte Version identisch sind.
Rundschreiben-Code (falsch)
static boolean checkKaibun(String str){
StringBuilder t = new StringBuilder(str);
return (t.equals(t.reverse()));
}
Dies ist immer wahr, soweit ich es selbst versucht habe. Die Ursache ist, dass die Methode StringBuilder equals nicht überschrieben wurde.
Die Lösung ist
Wenn Sie viele StringBuilder-Vergleiche in Ihrem Code verwenden, wäre dies 1, aber es scheint, dass Sie auch die hashCode-Methode überschreiben müssen (siehe unten), was ärgerlich ist.
Referenz https://www.atmarkit.co.jp/ait/articles/0702/20/news103.html
Die Implementierung in 2 ist wie folgt.
Rundschreiben Code
static boolean checkKaibun(String str){
StringBuilder t = new StringBuilder(str);
return (str.equals(t.reverse().toString()));
}
Recommended Posts