在C++中,c - 'a'
的作用是将小写字母转换为数组索引。具体解释如下:
-
字符的ASCII码:小写字母
a
到z
的ASCII码依次为97到122。例如,'a'
对应97,'b'
对应98,依此类推。 -
索引转换:通过
c - 'a'
,可以将字符c
转换为0
到25
的整数。例如:-
'a' - 'a' = 0
→ 对应数组索引0
(统计字母a
的次数)。 -
'b' - 'a' = 1
→ 对应数组索引1
(统计字母b
的次数)。 -
以此类推,
'z' - 'a' = 25
。
-
-
计数逻辑:代码使用长度为26的数组
cnt
(对应26个字母),通过遍历字符串:-
统计阶段:遍历
magazine
时,将每个字符对应的索引位置加1,记录字母出现次数。 -
验证阶段:遍历
ransomNote
时,将对应索引位置减1。若某一位置的值变为负数,说明magazine
中该字母不足,无法构造ransomNote
。
-
前提条件:输入字符串必须仅包含小写字母,否则c - 'a'
可能导致越界访问(如大写字母或其他字符会得到负数或超过25的值)。