Die anderen Antworten sind in der Theorie korrekt, aber der Verweis auf ASCII ist einfach falsch.
In Java gibt charAt
eine Unicode/UTF-16-Codeeinheit zurück. UTF-16 kodiert einige Unicode-Codepunkte in einer Code-Einheit; einige in zwei. Wenn sich Ihre Daten in den Bereichen von Codepunkten befinden, die UTF-16 in einer Codeeinheit codiert, ist die Subtraktion die "Entfernung" zwischen diesen Codepunkten. Wenn die Codepunkte in einem Bereich liegen, in dem es eine "sinnvolle" Reihenfolge gibt, ist die Entfernung sinnvoll.
Zum Beispiel sind die Basic Latin Kleinbuchstaben in der Reihenfolge des englischen Alphabets und UTF-16 codiert sie in einer Code-Einheit. Die Entfernung würde entlang einer "Alphabetlinie" statt einer "Nummernlinie" liegen. Dies funktioniert für Englisch und einige andere Alphabete, aber nicht für viele andere.
Außerdem würde die Subtraktion von 'a' 'a' auf 0, 'b' auf 1, 'z' auf 25, ... abbilden. Was ist nach 'z'? Nun, vielleicht sollten Sie diesen Code nicht auf solche Daten anwenden. Selbst wenn Ihr Text nur englische Wörter in Kleinbuchstaben enthält, ist der Algorithmus nicht in der Lage, die englischen Wörter "naiv" oder "resume" zu verarbeiten.
BTW-Es gibt etwa 120.000 "Buchstaben" in Unicode aus Dutzenden von Schriftsystemen (Skripten), die von vielen Dutzenden von Sprachen verwendet werden, jeweils mit dem, was ein gelernter Körper als Alphabet bezeichnet.
da Sie downvoted, könnten Sie mir sagen, welches Board ich kann, um Hilfe mit dieser Coding Frage zu bekommen? – j2emanue