Java字母距离?

01j*_*yss 4 java

有没有办法在Java中找到字母的距离?

我的意思是例如:

A -> C = 3 (as A, B, C)
B -> G = 6 (as B, C, D, E, F, G)
R -> Z = 9 (as R, S, T, U, V, W, X, Y, Z)
Run Code Online (Sandbox Code Playgroud)

(我正在寻找包含第一个字母的距离)

谢谢!

jra*_*rad 12

你可以这样做:

int diff = Character.toLowerCase('C') - Character.toLowerCase('A');
Run Code Online (Sandbox Code Playgroud)

这是有效的,因为每个char都与ASCII值相关联.'C'的值为67,'A'为65,因此'C' - 'A'== 67 - 65.请注意,只有所有字符都是大写或所有字符都是小写时,这才有效.

  • 你应该添加一个"+ 1",因为OP想要计算所有字母,包括给定的字母. (3认同)
  • 编辑以纳入每个人的评论. (2认同)
  • `Character.toLowerCase()`总是一个选项. (2认同)

Chr*_*gis 4

对于包含单个字符的字符串:

String s1 = "A";
String s2 = "c";

int result = ((int)s2.toLowerCase().charAt(0) - (int)s1.toLowerCase().charAt(0)) + 1;
Run Code Online (Sandbox Code Playgroud)

如果您只使用字符(没有字符串),那么 Java 的Character类有一个静态toLowerCase()方法。

编辑

对于结果可能为负的情况('A' - 'C'):

result = Math.abs(result);
Run Code Online (Sandbox Code Playgroud)