【发布时间】:2019-02-06 21:13:07
【问题描述】:
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
String s = br.readLine();
int[] arr = new int[26];
for(int i=0;i<s.length();i++)
arr[s.charAt(i)-'a']++;
int odds = 0;
for(int i=0;i<26;i++)
if(arr[i]%2!=0)
odds++;
if(odds%2==1 || odds==0)
System.out.println("First");
else
System.out.println("Second");
}
我看到了这段代码,发现这部分令人困惑。那么你能告诉我我们为什么要使用它吗?'a' 在arr[s.charAt(i)-'a']++; 中的意义是什么?
【问题讨论】:
-
'a'是char文字。char是一个整数类型,因此使用char的算术定义明确并产生一个整数结果。 -
@JohnBollinger 但这没有任何意义,除非您了解 ASCII/Unicode 并且所有小写字母都是连续的。
-
@JohnBollinger 先生,能否请您详细说明这个 'a' 的用法,我没看懂。
-
是的。 'a' 对应于 java 中的整数 97。因此,当您调用 charAt(i) 并从中减去整数 97 时,您实际上只是在取整数。字符的整数值有据可查。
标签: java arrays character non-ascii-characters