【发布时间】:2018-12-24 05:34:11
【问题描述】:
我试图理解这段代码,它检查 2 个不同字符串的字谜。
int[] charSet = new int[256];
for (int i = 0; i < sA.length(); i++) {
charSet[sA.charAt(i)]++;
}
for (int i = 0; i < sB.length(); i++) {
charSet[sB.charAt(i)]--;
}
int deletion = 0;
for (int i = 0; i < 256; i++) {
deletion += Math.abs(charSet[i]);
}
System.out.println("The amount of deletion needed: " + deletion);
我使用调试来真正掌握将 char 索引放置在数组中的想法,但是当我检查数组的内容时,要么是 0,要么是 1。但是sA.charat(i) 不是返回的字符串的索引不是 0 或 1 吗?
那么charSet[sA.charAt(i)]++; 这个代码到底做了什么,据我了解,它获取字符串的 char 索引并添加到数组中,但 ++ 的意义何在?
另外,更具体地说,deletion += Math.abs(charSet[i]); 这行代码是如何工作的,因为它所做的只是将一个数组的相应索引添加到另一个数组之上。但我真的不明白如何检查 2 个字符串的字谜。
如果有人能详细解释一下,我将不胜感激。
【问题讨论】:
-
否,
String.charAt(i)在字符位置i返回字符 值。 -
“但是
sA.charat(i)不是返回字符串的索引” 不,charAt在给定索引处返回char。char可能是一个字母 (A-Z),然后 ASCII 值 (65-90) 是charSet数组的索引。